Hi,

On Mon, 28 Sep 2015, A. Maitland Bottoms wrote:
> I've got uhd-3.9.1-1 conflicting with gnuradio << 3.7.8-3

Breaks should be enough.

> and I am considering adding a versioned depends for gnuradio 3.7.8-4
> and libgnuradio-osmosdr0.1.4 0.1.4-3 that requires libuhd003 >= 3.9.
> Will that be enough to avoid problems when upgrading from jessie to stretch?

Almost:
- Breaks is enough, no need for Conflicts
- gr-osmosdr is also a reverse dependency of libuhd003 so should have the
  tighter dep as well
- the tighter dependency should be injected via a stronger dependency
  in the "shlibs" file exported by libuhd003 (built with "dh_makeshlibs -V")

> Upstream has been breaking ABI routinely. Another approach would be
> to patch the soname and soversion for the Debian packaging resulting
> in a new libuhd3.9 library package. At the moment I am preferring
> this approach to the v5 suffix approach.

The package rename was the easy/clean solution to make sure that old
binaries do not use the new library. But you can also ensure this
with Breaks. Both are acceptable.

> But if taking the v5 suffix approach is the recommended way forward,
> I can certainly do that. But I would like your advice now that you
> know upstream UHD often breaks ABI without soname/soversion bumps.

the v5 is just a way to automatically rename the package, the suffix
itself is not important, so renaming to libuhd3.9 is also possible
but this will require a round through NEW while the v5 suffix
is already known in the overrides file.

> I think UHD upstream is interested in best practices for library
> release management, but, like me, needs a bit of education and a
> plan to move from the current state of release management to
> something better.

I think you know the basics: for upstream “change the SONAME when you
break the ABI”, and for you “change the package name when the SONAME
changes”.

> The reasoning is that uhd routinely changes ABI and API between versions.
> I have been using versioned package dependencies to manage library ABI
> changes. Since 3.9.0 was another ABI bump from 3.8.5, I went ahead and
> reverted the library rename.

As long as upstream doesn't follow the SONAME change, it's up to you
to change the package name when the ABI changes.

Cheers,
-- 
Raphaël Hertzog ◈ Debian Developer

Support Debian LTS: http://www.freexian.com/services/debian-lts.html
Learn to master Debian: http://debian-handbook.info/get/

Reply via email to