Hi Luca,

On Wed, Jul 01, 2020 at 05:23:05PM +0100, Luca Boccassi wrote:
> This is how upstream generates the pkg-config files for all components
> of util-linux - and it's how most libraries with optional features that
> I've come across do as well. If a feature is not built, and thus the
> binary does not link to the library, the dependency is not listed in
> pkg-config. And to me it would appear the correct thing to do - the
> point of pkg-config is to list what is needed to link against that
> library, not a hypotethical version with everything enabled - so I
> don't see upstream changing that any time soon.

This is not an upstream aspect. Upstream can provide different
interfaces under the same name, but we're talking about the Debian
package name "libmount-dev" as an interface here. What means
"libmount-dev" mostly is a decision of the respective package
maintainer. The meaning can change over time and we have a version to
account for this. A major cause for RC bugs is when a package maintainer
changes (removes) an interface that other packages previously relied
upon.

The thing is, other packages depend on "libmount-dev" and they expect to
get the same thing no matter how you build it. So what makes up
"libmount-dev" should be independent of which build profiles you use to
build it. However, certain build profiles can result in libmount-dev not
being built at all.

Compare this with hurd. There is hurd-dev and during bootstrap, we need
a stripped-down version of it. So we invented hurd-headers-dev.
Normally, hurd-dev provides hurd-headers-dev and a real hurd-headers-dev
package is not build. Only during bootstrap, there is a hurd-headers-dev
package that does not provide hurd-dev. Now when you need hurd
development stuff, you need to decide whether you just need the headers
or whether you need the full hurd-dev.

Another example is lighttpd-modules-*. What these packages contain is
explicitly left unspecified. If you need a particular module, you must
depend on the particular lighttpd-mod-* package provided by some of the
real module packages. This wasn't made up by upstream. It's about how
the package is maintained and about how other packages interface with
it.

Does that make more sense to you now?

> For libmount for example you get the exact same result w.r.t.
> libselinux.

That doesn't make it any better. I guess that's why the Debian package
makes libselinux-dev a mandatory dependency. Indeed, we build libselinux
quite early during bootstrap.

> I'll likely provide a backported patch as soon as the PR is merged -
> I'd really like to get more stress-test under way long before the
> bullseye freeze.

I think experimental would be a good target for such a feature. I admit
that it gets way less testing there. I'm looking forward to seeing it
included in Debian bullseye.

Helmut

Reply via email to