On 21 September 2015 at 13:06, Simon McVittie wrote:
| On 21/09/15 12:51, Dirk Eddelbuettel wrote:
| > | Yes, you should rename to libquantlib0v5 and ask the release team to
| > 
| > I'd prefer libquantlib1.  Any reason not to?
| 
| Changing the SONAME for this transition would be misleading unless the
| SONAME is already Debian-specific (in which case it would be
| libfoo.so.0debian1 or something), because the ABI depends on whether it
| was compiled with g++-4 or g++-5, and not on anything about the actual
| source code.
| 
| Your current source code compiled with g++-5 has the old SONAME but the
| new ABI; source code with a new SONAME compiled with g++-4 would have
| the new SONAME but the old ABI.
| 
| The solution is to change something that is part of the Debian
| packaging: the package name.

So is the trailing '1'.

All that matters is a string comparison making it different from libquantlib0.

As you're subtly hinting that I should rather use libquantlib0v5 I may do
so. It is just 'uglier' but common ...

| > | binNMU the bindings against it, unless you have another way to ensure
| > 
| > I fail to understand. The two packages both have sufficient Build-Depends as
| > eg here for quantlib-python
| > 
| > Build-Depends: debhelper (>= 7.0.0), python, python-all-dev (>= 2.6.6-3), \
| >   libquantlib0-dev (>= 1.6.2), gcc (>= 4:5.2), g++ (>= 4:5.2), \
| >   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
| >   libboost-dev (>= 1.34.0), libboost-test-dev (>= 1.34.0)
| > 
| > resulting in corresponding versioned Depends.
| 
| That is *normally* sufficient to do the right thing, but is not
| sufficient to prevent breakage in this ABI transition, because the
| libstdc++ change makes newer versions incompatible with older versions
| (if it didn't, we wouldn't have needed hundreds of transitions involving
| thousands of packages).
| 
| Specifically, the versions of the bindings currently in jessie depend on
| a version that is satisfied by the version of quantlib in stretch - but
| the quantlib binary in stretch is not compatible with those binding
| binaries, because compilation with a newer g++ caused it to break its ABI.

I may get myself confused by the names (I find '(old)stable', 'testing' and
'unstable' simpler to use).

And both testing and unstable have the correct pair: quantlin 1.6.2-1 and
quantlib-swig 1.6.1-1  (upstream needed a QL only fix, hence 1.6.2 there).

Neither one will make it to (old)?stable.  Only forcing by the user
would. And then they get what they asked for...


| > | that broken combinations of packages cannot be installed (including
| > | during the upgrade from jessie-as-oldstable to stretch-as-stable after
| > | stretch is released).
| > 
| > I don't see how using the package manager.
| 
| If you do the v5 rename as suggested, it prevents the installation of a
| broken combination of packages; libquantlib0v5 should conflict/replace

Yes, 'Conflicts:' and 'Replaces:'.  Or 'Breaks:' and 'Replaces:' ? I have an
old Breaks from a decade ago:

Breaks:  libquantlib-1.1, libquantlib-1.0.0
Replaces: libquantlib-1.2, libquantlib-1.1, libquantlib-1.0.0
Provides: libquantlib-1.2, libquantlib-1.1, libquantlib-1.0.0

| libquantlib0 (because they conflict over the path libquantlib.so.0), old
| bindings depend on libquantlib0, and new bindings depend on
| libquantlib0v5. The combination of those forces quantlib and all the
| installed bindings to be from the same "world".

Right.
 
| The wider transition of which this is a part has been going on for
| nearly 2 months, and is quite well-understood. I'm sorry it took so long
| for the mass-bug-filing to reach the last few packages with an ABI break
| and known rdeps (such as quantlib), but everyone involved is getting
| quite burned-out at this point.

Understood.

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

Reply via email to