On Tue, 2009-03-10 at 09:44 +0200, Panu Matilainen wrote:
If I understood this correctly, in this case there is sufficient
information to pull in the correct package already. Looking at
http://koji.fedoraproject.org/koji/rpminfo?rpmID=1075605 pointed to
earlier in the thread:
Requires:
audit-libs = 1.7.12-2.fc11
libaudit.so.0()(64bit)
libauparse.so.0()(64bit)
The soname dependencies point to the correct version of audit-libs
already, just the manual dep on audit-libs (to force exact version
match) is satisfied with any arch.
Sure.
It'd be possible to weigh the dependencies, preferring automatic
dependencies over manual ones and if manual dependencies are still
unresolved after resolving automatic ones, only then try to look for them.
Except the full dependency flags aren't stored in repodata, only GE/LE/EQ
etc so this wont work.
How do we tell what is an automatic dep. and what is a manual one?
Also it's not always true that automatic deps. are more restrictive
than manual ones, esp. manual ones that do "foo = <version>" ... which
is more of an edge case isn't 100% obvious either, but for the multilib.
case we can fix the manual req. line to also be compatible on the
multilib. side too and on the automatic side we can't fix it to specify
a version.
I do have an idea for changing the solver so that it processes all the
deps. for a pkg and gets a set of possible matches by package name ...
then doing a simple set intersection on the result.
This should solve this multilib. problem, and some version problems
maybe even making downgrades much more usable.
But that change is unlikely to happen for Fedora 11.
What should work for this case is resolving the dependencies with
only one
provider first and if after that there are still unresolved deps, try to
resolve them. "Only one provider" here assumes only looking at newest
packages (which I think yum already does).
If we know there is only one provider then we've already resolved the
dep. so that's kind of circular ... and while we do prefer the newish
package a lot, there are cases where we'll pick an older one (actually
foo = <version>, deps. are the main one).
--
James Antill <james(a)fedoraproject.org>
Fedora