Control: severity -1 serious

On Fri, Aug 07, 2020 at 12:28:17PM +0200, Stefan Bühler wrote:
> This is an actual problem, as libfam0 doesn't provide the FAMNoExists 
> symbol, but programs building against libgamin-dev might detect the 
> symbol as available and use it.

I concur.

> So libfam0 can't properly provide "libfam.so*" from libgamin0, and 
> shouldn't be allowed to by libgamin0.shlibs.

You mix two separate problems here:
 * libfam0 has functionality that libgamin0 doesn't. This is #438330.
 * libgamin0 has functionality that libfam0 doesn't. This is #510368.

To fix the former, libgamin0 should stop providing libfam0. The relevant
bug is tagged wontfix and as far as I can see, it no longer has
practical consequences. It also is kinda intentional. Dropping the
provides would against the intention of gamin.

However this bug has practical consequences now. If you build lighttpd
against gamin and then use it with fam, it breaks. I argue that
therefore, the shlibs part and providing libfam-dev is wrong. How bad is
this? If your gamin/fam consumer package wants to support both fam and
gamin, it can simply build against fam and work with gamin. If you want
to integrate with gamin, you build with gamin. So it doesn't actually
add value. The trade-off seems clear here.

So I think the part where the shlibs file claims libfam0 to suffice is a
release critical bug. Reasonably using libgamin-dev can result in a
binary that fails to run. In effect, this is similar to a missing
dependency and missing dependencies are release critical.

A possible solution would be adding a symbol file such that using a
gamin-specific symbol results in a proper libgamin0 dependency while
using any other symbol would continue to result in a libfam0 dependency.
I'm not sure whether the effort is warranted given that fam is dead.

> I think fixing libgamin0.shlibs and dropping fam from the archives is 
> the smoothest path to fixing this mess.

Well, yeah. Removing fam removes the whole mess of compatibility.

Helmut

Reply via email to