[aur-general] [arch-general] Please settle 'base' in 'depends' for all

Pierre Chapuis catwell at archlinux.us
Wed Jan 19 09:46:16 EST 2011


 On Thu, 20 Jan 2011 00:25:15 +1000, Allan McRae <allan at 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

-- 
 Pierre 'catwell' Chapuis



More information about the aur-general mailing list