On 19/01/11 23:09, Magnus Therning wrote:
On Wed, Jan 19, 2011 at 13:07, Allan McRae<al...@archlinux.org>  wrote:
On 19/01/11 22:49, Magnus Therning wrote:

On Wed, Jan 19, 2011 at 12:50, Allan McRae<al...@archlinux.org>    wrote:

On 19/01/11 22:20, Thomas Bächler wrote:

Am 19.01.2011 08:08, schrieb Allan McRae:

If we want to be really pedantic about dependencies, we should list
_ALL_ dependencies and not remove the ones that are dependencies of
dependencies.

Why don't we just do the correct thing:

If package A depends on package B, and B depends on C, then A might
depend on C explicitly because it accesses C directly. Or it might only
depend on indirectly C because B accesses C. We should reflect that in
dependencies (in the first case, A depends on C, in the second case it
doesn't).

The result is this: Whenever the dependencies of B change (e.g., C is
removed), A will still work correctly.

I agree that would be the correct thing to do.  In fact, I looked at
doing
this to the extent of including ever package that a program linked to in
its
dependencies.  This increases the number of dependencies needed for the
average package in the repos greatly (from memory it averaged a several
fold
increase).

I don't quite understand what you mean, did you add the transitive
closure of all dependencies to the package, or did you only add all
direct dependencies?

Essentially "readelf -d" on the files and add all needed packages to the
dependencies.  I.e. list all packages that are directly linked.

Its has been many years since I did graph theory... but isn't a "transitive
closure" essentially what we have been doing with only listing the top level
of dependencies and having them cover the rest?

Nope, it's the "opposite":

  • A depends on B
  • B depends on C

If the PKGBUILD for A lists the transitive closure, then it would have

  depends=(B C)

As we do now the transitive closure is calculated by pacman in order
to make sure all dependencies are installed.


Nope.  We currently list depends=(B) and pacman just checks B is installed.

Allan

Reply via email to