Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On Mon, 21 Sep 2015 at 08:54:15 +0200, Niels Thykier wrote: > Are there any update on this? AFAICT the upload has /not/ happened yet. I have uploaded this revised diff. As before, I didn't use the DELAYED queues, because this has taken quite long enough already. Regards, S diffstat for ginac_1.6.4-1 ginac_1.6.4-1.1 debian/libginac5.install |1 - debian/libginac5v5.install |1 + ginac-1.6.4/debian/changelog | 12 ginac-1.6.4/debian/control | 14 +- ginac-1.6.4/debian/rules |2 +- 5 files changed, 23 insertions(+), 7 deletions(-) diff -u ginac-1.6.4/debian/changelog ginac-1.6.4/debian/changelog --- ginac-1.6.4/debian/changelog +++ ginac-1.6.4/debian/changelog @@ -1,3 +1,15 @@ +ginac (1.6.4-1.1) unstable; urgency=medium + + * Non-maintainer upload. + + [ Steve Langasek ] + * Rename library packages for g++5 ABI transition. (Closes: #791048) + + [ Simon McVittie ] + * Also update debian/rules so that libginac5v5-dbg is non-empty + + -- Simon McVittieMon, 21 Sep 2015 07:56:10 +0100 + ginac (1.6.4-1) unstable; urgency=low * New upstream release; binary incompatible, new soname versioning, diff -u ginac-1.6.4/debian/control ginac-1.6.4/debian/control --- ginac-1.6.4/debian/control +++ ginac-1.6.4/debian/control @@ -6,11 +6,13 @@ Standards-Version: 3.9.6 Homepage: http://www.ginac.de/ -Package: libginac5 +Package: libginac5v5 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: ginac-tools +Conflicts: libginac5 +Replaces: libginac5 Description: GiNaC symbolic framework runtime library GiNaC (which stands for "GiNaC is Not a CAS (Computer Algebra System)") is a library for doing symbolic (i.e. non-numeric) computation directly in the C++ @@ -21,8 +23,8 @@ Package: libginac-dev Architecture: any Section: libdevel -Depends: libginac5 (= ${binary:Version}), ${misc:Depends}, libc6-dev, g++, libcln-dev, dpkg (>= 1.15.4) | install-info -Recommends: info | info-browser, libginac5-dbg (= ${binary:Version}) +Depends: libginac5v5 (= ${binary:Version}), ${misc:Depends}, libc6-dev, g++, libcln-dev, dpkg (>= 1.15.4) | install-info +Recommends: info | info-browser, libginac5v5-dbg (= ${binary:Version}) Suggests: ginac-tools Description: GiNaC symbolic framework development files GiNaC (which stands for "GiNaC is Not a CAS (Computer Algebra System)") is a @@ -45,12 +47,14 @@ This package provides some additional tools, like the popular ginsh (GiNaC interactive shell) and viewgar (for inspecting GiNaC archive files). -Package: libginac5-dbg +Package: libginac5v5-dbg Architecture: any Section: debug Priority: extra -Depends: libginac5 (= ${binary:Version}), ${misc:Depends} +Depends: libginac5v5 (= ${binary:Version}), ${misc:Depends} Recommends: gdb (>= 6.3) +Conflicts: libginac5-dbg +Replaces: libginac5-dbg Description: GiNaC symbolic framework debugging symbols GiNaC (which stands for "GiNaC is Not a CAS (Computer Algebra System)") is a library for doing symbolic (i.e. non-numeric) computation directly in the C++ reverted: --- ginac-1.6.4/debian/libginac5.install +++ ginac-1.6.4.orig/debian/libginac5.install @@ -1 +0,0 @@ -debian/tmp/usr/lib/libginac*.so.* diff -u ginac-1.6.4/debian/rules ginac-1.6.4/debian/rules --- ginac-1.6.4/debian/rules +++ ginac-1.6.4/debian/rules @@ -5,7 +5,7 @@ include /usr/share/cdbs/1/rules/autoreconf.mk GINACLIB_VERSION := 5 -GINACLIB := libginac$(GINACLIB_VERSION) +GINACLIB := libginac$(GINACLIB_VERSION)v5 DEB_CONFIGURE_EXTRA_FLAGS := --disable-rpath DEB_DBG_PACKAGE_ALL = only in patch2: unchanged: --- ginac-1.6.4.orig/debian/libginac5v5.install +++ ginac-1.6.4/debian/libginac5v5.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/libginac*.so.*
Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On Sun, 6 Sep 2015 14:46:39 +0100 Simon McVittiewrote: > On 06/09/15 10:47, Simon McVittie wrote: > > On Fri, 21 Aug 2015 at 09:12:18 +0100, Simon McVittie wrote: > >> The short version is, yes the rename is the right thing to do. > > > > I have done this as a non-maintainer upload with the attached debdiff. > > I haven't used the DELAYED queues, because the release team want this > > multi-transition to be over. > > My upload was rejected with: > > libginac5v5-dbg: lintian output: 'empty-binary-package ', automatically > rejected package. > libginac5v5-dbg: If you have a good reason, you may override this > lintian tag. > > so my patch is clearly not 100% right. I'll check more thoroughly and > upload a fixed version later today if nobody else gets there first. > > I'd also be happy to sponsor a minimal update for this if you need it > (send a debdiff or a .dsc + .diff.gz to the bug address, or upload the > .dsc + .diff.gz somewhere and tell the bug address where to find it). > > S > Hi, Are there any update on this? AFAICT the upload has /not/ happened yet. Is anything blocking the upload (beyond someone doing it)? Thanks, ~Niels
Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On 21/09/15 07:54, Niels Thykier wrote: > On Sun, 6 Sep 2015 14:46:39 +0100 Simon McVittie >> so my patch is clearly not 100% right. I'll check more thoroughly and >> upload a fixed version later today if nobody else gets there first. > > Are there any update on this? AFAICT the upload has /not/ happened yet. You are correct. I think I got distracted by other packages. > Is anything blocking the upload (beyond someone doing it)? Not as far as I know, only "someone doing the work". S
Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On 09/21/2015 08:54 AM, Niels Thykier wrote: > Is anything blocking the upload (beyond someone doing it)? I'm not aware of anythin blocking. I've been away for a couple of weeks and will care for this later today.
Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On 09/21/2015 09:29 AM, Simon McVittie wrote: > I have uploaded this revised diff. Well, that diff should resolve this issue. Thanks, Simon.
Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On 06/09/15 10:47, Simon McVittie wrote: > On Fri, 21 Aug 2015 at 09:12:18 +0100, Simon McVittie wrote: >> The short version is, yes the rename is the right thing to do. > > I have done this as a non-maintainer upload with the attached debdiff. > I haven't used the DELAYED queues, because the release team want this > multi-transition to be over. My upload was rejected with: libginac5v5-dbg: lintian output: 'empty-binary-package ', automatically rejected package. libginac5v5-dbg: If you have a good reason, you may override this lintian tag. so my patch is clearly not 100% right. I'll check more thoroughly and upload a fixed version later today if nobody else gets there first. I'd also be happy to sponsor a minimal update for this if you need it (send a debdiff or a .dsc + .diff.gz to the bug address, or upload the .dsc + .diff.gz somewhere and tell the bug address where to find it). S
Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On Fri, 21 Aug 2015 at 09:12:18 +0100, Simon McVittie wrote: > On 21/08/15 08:46, Richard B. Kreckel wrote: > > This patch replaces libginac5. This is in line with what the bug report > > says: "Rename the library package, append "v5" to the name of the > > package (e.g. libfoo2 -> libfoo2v5)". > > > > I can do that and will do so ASAP if it's the right thing to do. > > The short version is, yes the rename is the right thing to do. I have done this as a non-maintainer upload with the attached debdiff. I haven't used the DELAYED queues, because the release team want this multi-transition to be over. S diffstat for ginac_1.6.4-1 ginac_1.6.4-1.1 debian/libginac5.install |1 - debian/libginac5v5.install |1 + ginac-1.6.4/debian/changelog |9 + ginac-1.6.4/debian/control | 14 +- 4 files changed, 19 insertions(+), 6 deletions(-) diff -u ginac-1.6.4/debian/changelog ginac-1.6.4/debian/changelog --- ginac-1.6.4/debian/changelog +++ ginac-1.6.4/debian/changelog @@ -1,3 +1,12 @@ +ginac (1.6.4-1.1) unstable; urgency=medium + + * Non-maintainer upload. + + [ Steve Langasek ] + * Rename library packages for g++5 ABI transition. (Closes: #791048) + + -- Simon McVittieSat, 05 Sep 2015 21:18:27 +0100 + ginac (1.6.4-1) unstable; urgency=low * New upstream release; binary incompatible, new soname versioning, diff -u ginac-1.6.4/debian/control ginac-1.6.4/debian/control --- ginac-1.6.4/debian/control +++ ginac-1.6.4/debian/control @@ -6,11 +6,13 @@ Standards-Version: 3.9.6 Homepage: http://www.ginac.de/ -Package: libginac5 +Package: libginac5v5 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: ginac-tools +Conflicts: libginac5 +Replaces: libginac5 Description: GiNaC symbolic framework runtime library GiNaC (which stands for "GiNaC is Not a CAS (Computer Algebra System)") is a library for doing symbolic (i.e. non-numeric) computation directly in the C++ @@ -21,8 +23,8 @@ Package: libginac-dev Architecture: any Section: libdevel -Depends: libginac5 (= ${binary:Version}), ${misc:Depends}, libc6-dev, g++, libcln-dev, dpkg (>= 1.15.4) | install-info -Recommends: info | info-browser, libginac5-dbg (= ${binary:Version}) +Depends: libginac5v5 (= ${binary:Version}), ${misc:Depends}, libc6-dev, g++, libcln-dev, dpkg (>= 1.15.4) | install-info +Recommends: info | info-browser, libginac5v5-dbg (= ${binary:Version}) Suggests: ginac-tools Description: GiNaC symbolic framework development files GiNaC (which stands for "GiNaC is Not a CAS (Computer Algebra System)") is a @@ -45,12 +47,14 @@ This package provides some additional tools, like the popular ginsh (GiNaC interactive shell) and viewgar (for inspecting GiNaC archive files). -Package: libginac5-dbg +Package: libginac5v5-dbg Architecture: any Section: debug Priority: extra -Depends: libginac5 (= ${binary:Version}), ${misc:Depends} +Depends: libginac5v5 (= ${binary:Version}), ${misc:Depends} Recommends: gdb (>= 6.3) +Conflicts: libginac5-dbg +Replaces: libginac5-dbg Description: GiNaC symbolic framework debugging symbols GiNaC (which stands for "GiNaC is Not a CAS (Computer Algebra System)") is a library for doing symbolic (i.e. non-numeric) computation directly in the C++ reverted: --- ginac-1.6.4/debian/libginac5.install +++ ginac-1.6.4.orig/debian/libginac5.install @@ -1 +0,0 @@ -debian/tmp/usr/lib/libginac*.so.* only in patch2: unchanged: --- ginac-1.6.4.orig/debian/libginac5v5.install +++ ginac-1.6.4/debian/libginac5v5.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/libginac*.so.*
Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On 08/21/2015 10:12 AM, Simon McVittie wrote: The broken situation would be that you have programs (or libraries) foo and bar installed, both linked to libginac.so.5, with foo expecting the g++-4.x ABI and bar expecting the g++-5 ABI. Depending which version of libginac.so.5 you had installed, either foo or bar would crash. What we are doing by renaming the package is to force this situation not to exist: foo would depend on libginac5, bar would depend on libginac5v5, and dpkg will not let you have them both installed at the same time. But wouldn't that mean that a program that's not in the archives (a commercial program, for instance) which depends on a C++ library libjoedoe.so.23 in Jessie will not work any more because there's going to be libjoedoe.so.23 compiled with the g++-5 ABI in Stretch. And we're not going to do that, right? (Sorry for being a nuisance.) -richard.
Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On 21/08/15 23:42, Richard B. Kreckel wrote: But wouldn't that mean that a program that's not in the archives (a commercial program, for instance) which depends on a C++ library libjoedoe.so.23 in Jessie will not work any more because there's going to be libjoedoe.so.23 compiled with the g++-5 ABI in Stretch. If the third-party software is a .deb, it will become uninstallable. Not great, but at least the brokenness is easy to detect. If the third-party software is not a .deb, yes, you are correct. This is the least bad we can do, given the constraints (libraries are located by SONAME; SONAMEs are primarily chosen by upstream and should not normally be altered downstream; and g++-5 does not produce the same ABI for the same source code that 4.x would). Either way, the workaround is a chroot, or keeping an old library to be used via LD_LIBRARY_PATH or something. This sort of thing every few years is why I'm glad I mostly write C... S
Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On 21/08/15 08:46, Richard B. Kreckel wrote: This patch replaces libginac5. This is in line with what the bug report says: Rename the library package, append v5 to the name of the package (e.g. libfoo2 - libfoo2v5). I can do that and will do so ASAP if it's the right thing to do. The short version is, yes the rename is the right thing to do. Please check that all your library's library build-dependencies have started their transition, or do not need a transition. Looking at https://packages.debian.org/source/unstable/ginac, neither cln nor gmp seem to need a transition, so I think you're good to go. In case you maintain other affected packages: if build-dependencies have not yet started their transition but they need one, please help their maintainers to start the transition; if it is unclear whether they need a transition or not, please help to analyze that. When the versions of all your library's build-dependencies in unstable are appropriate, please start your library's transition in unstable too. Versioned build-dependencies, to make sure the renamed version of the dependency is picked up, seem like a good idea in this situation. But don't the two packages have to coexist? (After all, one of the concerns is to not break packages which are not in the archive!) Programs compiled against ginac with g++-4.x got a shared library dependency on libginac.so.5, which they assume will the g++-4.x-compatible ABIs. The shlibs system turns that into a dpkg dependency on libginac5. Programs compiled against ginac with g++-5.x also get a shared library dependency on libginac.so.5, but *they* assume that will mean g++-5-compatible ABIs. There can only be one libginac.so.5 in the highest-priority location of the public library search path, and it cannot mean both things. The broken situation would be that you have programs (or libraries) foo and bar installed, both linked to libginac.so.5, with foo expecting the g++-4.x ABI and bar expecting the g++-5 ABI. Depending which version of libginac.so.5 you had installed, either foo or bar would crash. What we are doing by renaming the package is to force this situation not to exist: foo would depend on libginac5, bar would depend on libginac5v5, and dpkg will not let you have them both installed at the same time. This would break foo in the sense that it becomes uninstallable, but there's no way to avoid that. When the majority of the renames have been started, the release team will schedule several thousand binNMUs (rebuilds) to make everything installable again. The release team are not currently scheduling rebuilds where it is not strictly needed, because if they did that, many C++ packages would end up being binNMU'd multiple times by the time the transition completes; that's quite expensive on slower architectures like arm* and mips. S
Bug#791048: ginac: library transition may be needed when GCC 5 is the default
On 08/19/2015 10:56 AM, Simon McVittie wrote: On Mon, 03 Aug 2015 at 10:01:51 +0200, Richard B. Kreckel wrote: But there is going to be libginac5 in Debian 9 anyway and this will be compiled with the new ABI. So, there is no need for a libginac2v5 package. libginac2v5 is unecessary, but libginac5 is already in the archive with the g++-4.x ABI, and other packages have been compiled against it; so a transition to libginac5v5 is (very likely to be) needed for the g++-5 ABI. Okay, this makes sense. It wasn't clear to me if the soname bump mentioned in the bug report was relative to jessie or to what's in the archive. Ubuntu have a patch for this, which I have attached. The lintian overrides are unnecessary in Debian (lintian has been changed to accept the v5 suffix as valid). This patch replaces libginac5. This is in line with what the bug report says: Rename the library package, append v5 to the name of the package (e.g. libfoo2 - libfoo2v5). I can do that and will do so ASAP if it's the right thing to do. But don't the two packages have to coexist? (After all, one of the concerns is to not break packages which are not in the archive!) (Sorry, I also found the wiki explanation vague on this point. Maybe, somebody can improve it.) -richard.