Rewrite depsolver to use a series of passes over all packages.
authorKristian Høgsberg <krh@redhat.com>
Mon, 14 Apr 2008 20:56:35 +0000 (16:56 -0400)
committerKristian Høgsberg <krh@redhat.com>
Mon, 9 Jun 2008 16:47:37 +0000 (12:47 -0400)
commit76b8805f3e61cb5d36c382450c840e63dc835269
treefa84eb6f19bbb369c46602233edfe0c3be2e64af
parenta198fe281fba30e5882bdde1b1ddb2324b6abc71
Rewrite depsolver to use a series of passes over all packages.

The big change is that we follow one step of the depedency chain for
each package to resolve in each iteration, and repeat until there are
no more possible moves.  In contrast the old depsolver would try to
follow the dependency chain completely for one package at a time.

This new approach is simpler and faster, and at the same time more
roboust. Instead of knowing how one newly installed package may
affect other packages (obsoleting, pulling in new packages etc), the
new algorithm just looks at the total list of requires, provides,
obsoletes and conflicts after installing new packages.
main.c
razor.c
razor.h
rpm-razor.c
test-driver.c
types.c