On Sat, Aug 08, 2020 at 10:26:08AM +1000, Carlo Zancanaro wrote: > Hi Jakub, > > On Sat, Aug 08 2020, Jakub Kądziołka wrote: > > Why? I would expect only libgit2 to be present, and not all of its > > dependencies. ... > > If you take a look at the definition for libgit2 in > gnu/packages/version-control.scm you'll see that this isn't all the > dependencies for libgit2, it's only the propagated-inputs. For instance, > libssh2 and http-parser are both inputs for libgit2, but they don't appear > in your list because they're not propagated. > > > ... It seems to me that this has only downsides - the entire transitive > > closure needs to be present during build, even when the actually used > > dependencies don't reference it, and the names of inputs used by > > packages are now public API, and changing them can break the build of > > any transitively dependent package. > > The way propagated inputs work is that they're installed alongside the > package, so in some sense they are part of the public API of the package. > They should be used with care, but as far as I can tell everything is > working properly here. You're absolutely right. This even explains the original weirdness I saw. Serves me right for hacking at 1 AM... Sorry for the noise :/