[Distutils] Reverse dependencies
Martin Aspeli
optilude at gmx.net
Mon May 14 01:57:59 CEST 2007
Phillip J. Eby wrote:
> At 11:30 PM 5/13/2007 +0100, Martin Aspeli wrote:
>> I won't pretend to have thought this through to very end, but I don't
>> quite understand why this should be so hard, then.
>>
>> The algorithm would be something like:
>>
>> - I support platform Plone, version >= 3.0.1 and < 4
>> - I am looking for package your.package, version >= 1.0
>> - The most recent version that satisfies this is 2.1
>> - Version 2.1 declares it supports Plone >=4, can't use that
>> - The second-most-recent version that satisfies
>> your.package >= 1.0 is 2.0
>> - Version 2.0 declares it supports Plone 3.9, okay, we can use that
>>
>> - Repeat check for Zope
>
> This isn't actually any different than a backtracking dependency
> search. The only thing that makes it (potentially) simpler is that
> it could simply allow backing off only for immediate dependencies,
> rather than backtracking transitive dependencies.
>
> That is, while selecting the "best version available" of a package,
> we could check its immediate dependencies for conflict with all known
> dependencies, and automatically back off.
>
> Practically speaking, however, it's still considerably more complex
> than the existing algorithm -- and still not certain to produce valid results.
Yes, I think you're right.
>> One difference to straight dependencies, by the way, is the case where
>> you support (or a package is known to work with) a platform, without
>> necessarily needing to depend on it. That may be useful metadata.
>
> Useful for what?
Useful if the above algorithm can be made to work: I have a package
which does not directly require Plone (so I don't want this installed as
a dependency), say, but which I know works with Plone 3, and not with
Plone 2.5 (because of other things changing in Plone). In this case, I
can usually signal this to other packages which wants "the version of
this package which is known to work with the platform I'm using".
Martin
More information about the Distutils-SIG
mailing list