Bug#791048: ginac: library transition may be needed when GCC 5 is the default

2015-09-21 Thread Simon McVittie
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 McVittie   Mon, 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

2015-09-21 Thread Niels Thykier
On Sun, 6 Sep 2015 14:46:39 +0100 Simon McVittie
 wrote:
> 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

2015-09-21 Thread Simon McVittie
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

2015-09-21 Thread Richard B. Kreckel
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

2015-09-21 Thread Richard B. Kreckel
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

2015-09-06 Thread Simon McVittie
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

2015-09-06 Thread Simon McVittie
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 McVittie   Sat, 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

2015-08-21 Thread Richard B. Kreckel
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

2015-08-21 Thread Simon McVittie
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

2015-08-21 Thread Simon McVittie
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

2015-08-21 Thread Richard B. Kreckel
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.