On Wed, Jan 19, 2011 at 14:46, Pierre Chapuis <catwell@archlinux.us> wrote:
On Thu, 20 Jan 2011 00:25:15 +1000, Allan McRae <allan@archlinux.org> wrote:
The problem is that the transitive closure can not be assumed to be correct.
e.g. At the time A is built:
A -> B,C,D,E B -> C,D,E C -> D,E
Then B is updated and
B -> C,D,E,F.
Now the assuming a transitive closure for the dependency list for A is incorrect. Installing the listed dependencies of A with the equivalent of -Sd would result in F not being installed which would break A through broken B.
So either: 1) we require a largely unnecessary rebuild of A 2) we always check the dependencies of uninstalled dependencies.
Note #2 is less burden on packagers and is more efficient in the examples given above if both B and D are installed (two checks vs four), and that will be the case for most system updates. When none of A - E are installed, they are probably equally efficient.
Yes, I agree with that: dependencies will always have to be checked at package install time. That means that any approach based on a "transitive closure" at packaging time is useless.
What could also happen is that C is updated and no longer needs E. Then, with a "transitive closure", A would still install E, which would be useless for the user. So the only way to be safe is not to be clever and to specify real dependencies, eg:
Real deps --------- A -> B,D B -> C C -> D,E
Transitive closure ------------------ A -> B,C,D,E B -> C,D,E C -> D,E
Current Arch way ---------------- A -> B B -> C C -> D,E
What should be done ------------------- A -> B,D B -> C C -> D,E
I think you are right, that's what should be done. I would argue though that the current Arch way actually is somewhere in between what you call "Real deps" and "Current Arch way", simply because some package maintainers know what the real dependencies are and will put them in. Other package maintainers try to build in a chroot until it succeeds, and hence up at "Current Arch way". In any case, this whole argument is rather besides the point :-) /M -- Magnus Therning OpenPGP: 0xAB4DFBA4 email: magnus@therning.org jabber: magnus@therning.org twitter: magthe http://therning.org/magnus