On Mar 15, 2006, at 12:02 AM, Daniel Macks wrote:
$ fink build cdat unable to resolve version conflict on multiple dependencies python >= 1:2.4-1 python <= 2.5-1 Exiting with failure.The offending dependency is: python (>= 1:2.4-1) | python (<= 2.5-1)
I can't tell you why such a weird dependency is being used, but I can explain why this error occurs. The short answer is "Fink's dep engine is broken", of course. But if you're willing to delve into black magic...
When Fink tries to choose packages to satisfy a dependency such as 'python (>= 1:2.4-1) | python (<= 2.5-1)', it does it in two steps:
1. It gets a list of PkgVersion objects which satisfy the dep. While this is happening, if it seems any version specs like '(>= 1:2.4-1)', it stores them off to the side somewhere.
2. It tries to choose between the PkgVersion objects. It tries to choose one that's already going to be installed/built in this Fink run, then it tries to choose one that's already installed.
Otherwise, it picks a Package (eg 'python'), and then chooses the highest-versioned PkgVersion from that package, subject to the version specs that were stored earlier.
So the problem here is that step 1 sees both (>= 1:2.4-1) and (<= 2.5-1), but has no way to communicate to step 2 that these are in an OR relationship. If you already have python installed, step 2 just picks that, and you're good. But if it gets to the next step, it tries to pick the highest-versioned PkgVersion of python subject to BOTH specs, which clearly won't work.
The good news is that this only happens with very weird specs, like the one in this package. The easy solution is just to use sane deps.
I'll attempt to fix this in HEAD, but there are so many weird side- effects like this in our dep engine that it's likely to cause more trouble. We'll see!
Dave
PGP.sig
Description: This is a digitally signed message part