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

Magnus Therning magnus at therning.org
Wed Jan 19 09:48:55 EST 2011


On Wed, Jan 19, 2011 at 14:46, Pierre Chapuis <catwell at archlinux.us> wrote:
> 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

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 at therning.org   jabber: magnus at therning.org
twitter: magthe               http://therning.org/magnus


More information about the aur-general mailing list