[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