debian-3.21: Modules for working with the Debian package systemSource codeContentsIndex

This dependency solver determines which binary packages to install in order to satisfy a set of dependency relations. It uses a brute force method, but tweaked to the point where it is usually able to complete on real-world inputs.

Author: David Fox

simplifyRelations :: [BinaryPackage] -> Relations -> [String] -> Arch -> SimpleRelations
solutions :: [BinaryPackage] -> SimpleRelations -> Int -> Either String [(Int, [BinaryPackage])]
testArch :: Arch -> Relation -> Bool
:: [BinaryPackage]
-> Relations
-> [String]Given several alternative packages which satisfy the relation, sort by name in this order.
-> ArchThe build architecture
-> SimpleRelations
Turn the expressive inequality style relations to a set of simple equality relations on only the packages in the available list.
:: [BinaryPackage]The packages available to satisfy dependencies
-> SimpleRelationsThe dependency relations to be satisfied
-> IntGive up after this many solutions are computed
-> Either String [(Int, [BinaryPackage])]On success return the set of packages to install, and the solution's sequence number. Also returns the modified list of dependency relations, with all inequalities replaced by equalities on the particular versions of each package which are available.

Given a root and a dependency list, return a list of possible solutions to the dependency set. Each solution is a list of package versions which satisfy all the dependencies. Note that if a package is mentioned in two different clauses of the dependency list, both clauses must be satisfied:

So we can use each clause to eliminate packages which cannot satisfy the dependency set.

testArch :: Arch -> Relation -> BoolSource
Produced by Haddock version 2.4.2