Web lists-archives.com

Re: no{thing} build profiles

On Tue, Oct 23, 2018 at 04:55:00PM +0200, Wouter Verhelst wrote:
> On Sun, Oct 21, 2018 at 12:13:27PM -0400, Marvin Renich wrote:
> > * Sune Vuorela <nospam@xxxxxxxxxx> [181021 06:05]:
> > > On 2018-10-21, Jonas Smedegaard <jonas@xxxxxxxx> wrote:
> > > > I disagree that libgpgme11 should depend/recommend/suggest gnupg at all: 
> > > > As a library it cannot possibly declare how tight a relationship to 
> > > > declare - instead, all _consumers_ of the library must declare whether 
> > > > they depend/recommend/suggest gnupg.
> > > 
> > > libgpgme is completely useless without gnupg. I think it is perfectly
> > > fine for these kind of relations, unless we really are in corner-case
> > > territory. See for example fam.
> > 
> > I strongly agree with Jonas.  Upstream links to libgpgme as a .so to
> > provide optional behavior.  This requires libgpgme to be installed in
> > order to even run neomutt, whether the user wants the feature or not.
> > It is perfectly reasonable to want to install neomutt but want to _not_
> > install gnupg.
> Not in Debian.
> The Debian philosophy in this has always been to link against all
> libraries where possible, and to detect at runtime whether something can
> be used. This introduces a much larger dependency tree, but ends up
> being easier to use for most users.

Link against the _libraries_.  That's indeed much more reliable, requires
less effort, and has a minimal cost (the libraries themselves take little
space).  And the library itself is content not having gnupg installed as
long as its functions don't get used.

> The alternative is something like Gentoo, where you *can* decide what
> you compile in and what you don't. The trouble with Gentoo, however, is
> that you spend seven hours installing it, and then your mouse doesn't
> work because you set one USE flag incorrectly and now you have to
> recompile the universe (I exaggerate, but you get the point).

That's why libgpgme is compiled into our mutts.  That's nice; the Depends
from mutt to libgpgme11 is not in question here -- what I'm complaining
about is the Depends from libgpgme11 on gnupg and Recommends on the rest of
gpg programs.

It's trivial to install gnupg if you need it; it does nothing good without
some manual configuration anyway.

> > The proper fix is to convince upstream to dynamically link at runtime
> > and disable some features if libgpgme is not available.
> That's a great way to introduce a large set of bugs of the "oops, tried
> to use libX when dlopen failed for some reason" type. It's better to
> avoid that issue by just having a hard dependency on the library in
> question.

Yeah, most languages don't handle missing libs gracefully; we can cut the
chain in a place where it's easier to make it optional.

⣾⠁⢰⠒⠀⣿⡁ 10 people enter a bar: 1 who understands binary,
⢿⡄⠘⠷⠚⠋⠀ 1 who doesn't, D who prefer to write it as hex,
⠈⠳⣄⠀⠀⠀⠀ and 1 who narrowly avoided an off-by-one error.