On Thu, 18 Dec 2008 19:34:55 -0500 (EST)
"Benjamin R. Haskell" <[email protected]> wrote:
> On an old Gentoo system, I'm in the middle of changing from the
> postgresql 
> + libpq to postgresql-base + postgresql-server split. There are
> things that keep drawing in libpq as a dependency. While trying to
> figure out one such thing, I added --show-reasons full, and realized
> I don't know what it's telling me... Is there a useful description of
> its output somewhere (beyond "show why packages are being
> (un)installed")?

The 'reasons' are a list of packages whose dependencies include the
item in question. That's all there is to it.

> I just can't understand how the linear list of packages it outputs
> relates to the dependency DAG. Is it just a topological sort?

It's not just a topological sort, because deps are more complicated
than a simple graph. The current resolver doesn't even approximately do
a topological sort -- instead, it recursively builds up the dep list by
adding in dependencies before (or after, for post deps) where they're
needed in the list.

> So, as a simple, abstract case, if the dependencies are:
> 
> dev/aaa: no deps
> dev/bbb: no deps
> dev/ccc: needs dev/aaa
> sys/foo: needs dev/ccc
> sys/goo: needs dev/aaa, dev/bbb
> sys/hoo: needs dev/ccc, sys/goo, sys/foo
> 
> and sys/goo is already installed (thus, dev/aaa and dev/bbb), could 
> 'paludis --show-reasons full -pi sys/hoo' show up as:
> 
> * dev/aaa [- 1]
> * dev/ccc [N 1]
> * sys/foo [N 1]
> * dev/bbb [- 1]
> * sys/goo [- 1]
> * sys/hoo [N 1]
> 
> Or am I missing some other constraint on the ordering?
> 
> The way I (think I) understand it: All things depended-on show up
> before the things that depend on them.

That's correct for simple cases using only build dependencies.
Unfortunately, we also have run and post dependencies, real circular
dependencies, not really circular dependencies that can be resolved by
using installed packages over something that needs upgrading, ||
dependencies, slots and blockers.

> For a concrete case, what does this final portion of this output
> mean? Is net-libs/openslp the culprit (thing that requires
> dev-db/postgresql)?
>
> * dev-db/postgresql [N 8.0.15]
>      "Sophisticated and powerful Object-Relational DBMS."
>      -doc kerberos nls pam perl -pg-intdatetime python readline
> (-selinux) ssl -tcl -test xml zlib

I don't see any reasons listed at all there.

-- 
Ciaran McCreesh

Attachment: signature.asc
Description: PGP signature

_______________________________________________
paludis-user mailing list
[email protected]
http://lists.pioto.org/mailman/listinfo/paludis-user

Reply via email to