debian-1.2: A set of modules for working with debian control files and packagesContentsIndex
Linspire.Debian.Dependencies
Contents
Basic CSP Types and Functions
Test CSP
Tree Helper Functions
mkSearchTree
Conflict Set
Backtracking Labeler
BackJumping Solver
Synopsis
data Status
= Remaining AndRelation
| MissingDep Relation
| Complete
type State a = (Status, [a])
complete :: State a -> Bool
data CSP a = CSP {
pnm :: (PackageNameMap a)
relations :: Relations
depFunction :: (a -> Relations)
conflicts :: (a -> Relations)
packageVersion :: (a -> (String, DebianVersion))
}
controlCSP :: Control -> Relations -> (Paragraph -> Relations) -> CSP Paragraph
testCSP :: FilePath -> (Paragraph -> Relations) -> String -> (CSP Paragraph -> IO a) -> IO a
depF :: Paragraph -> Relations
packageVersionParagraph :: Paragraph -> (String, DebianVersion)
conflict :: CSP p -> p -> p -> Bool
conflict' :: (String, DebianVersion) -> Relation -> Bool
mkTree :: a -> [Tree a] -> Tree a
label :: Tree a -> a
initTree :: (a -> [a]) -> a -> Tree a
mapTree :: (a -> b) -> Tree a -> Tree b
foldTree :: (a -> [b] -> b) -> Tree a -> b
zipTreesWith :: (a -> b -> c) -> Tree a -> Tree b -> Tree c
prune :: (a -> Bool) -> Tree a -> Tree a
leaves :: Tree a -> [a]
inhTree :: (b -> a -> b) -> b -> Tree a -> Tree b
distrTree :: (a -> [b]) -> b -> Tree a -> Tree b
mkSearchTree :: forall a . CSP a -> Tree (State a)
earliestInconsistency :: CSP a -> State a -> Maybe ((String, DebianVersion), (String, DebianVersion))
type ConflictSet = ([(String, DebianVersion)], [Relation])
isConflict :: ConflictSet -> Bool
solutions :: Tree (State a, ConflictSet) -> [State a]
type Labeler a = CSP a -> Tree (State a) -> Tree (State a, ConflictSet)
search :: Labeler a -> CSP a -> [State a]
bt :: Labeler a
bj :: CSP p -> Tree (State p, ConflictSet) -> Tree (State p, ConflictSet)
unionCS :: [ConflictSet] -> ConflictSet
combine :: CSP p -> [(State p, ConflictSet)] -> [ConflictSet] -> ConflictSet
Basic CSP Types and Functions
data Status
Constructors
Remaining AndRelation
MissingDep Relation
Complete
show/hide Instances
type State a = (Status, [a])
complete :: State a -> Bool
data CSP a
Constructors
CSP
pnm :: (PackageNameMap a)
relations :: Relations
depFunction :: (a -> Relations)
conflicts :: (a -> Relations)
packageVersion :: (a -> (String, DebianVersion))
Test CSP
controlCSP :: Control -> Relations -> (Paragraph -> Relations) -> CSP Paragraph
TODO addProvides -- see DQL.Exec
testCSP :: FilePath -> (Paragraph -> Relations) -> String -> (CSP Paragraph -> IO a) -> IO a
depF :: Paragraph -> Relations
packageVersionParagraph :: Paragraph -> (String, DebianVersion)
conflict :: CSP p -> p -> p -> Bool
conflict' :: (String, DebianVersion) -> Relation -> Bool
JAS: deal with Provides (can a package provide more than one package?)
Tree Helper Functions
mkTree :: a -> [Tree a] -> Tree a
label :: Tree a -> a
initTree :: (a -> [a]) -> a -> Tree a
mapTree :: (a -> b) -> Tree a -> Tree b
foldTree :: (a -> [b] -> b) -> Tree a -> b
zipTreesWith :: (a -> b -> c) -> Tree a -> Tree b -> Tree c
prune :: (a -> Bool) -> Tree a -> Tree a
leaves :: Tree a -> [a]
inhTree :: (b -> a -> b) -> b -> Tree a -> Tree b
distrTree :: (a -> [b]) -> b -> Tree a -> Tree b
mkSearchTree
mkSearchTree :: forall a . CSP a -> Tree (State a)
earliestInconsistency :: CSP a -> State a -> Maybe ((String, DebianVersion), (String, DebianVersion))
earliestInconsistency does what it sounds like the 'reverse as' is because the vars are order high to low, but we want to find the lowest numbered (aka, eariest) inconsistency ??
Conflict Set
type ConflictSet
 = ([(String, DebianVersion)], [Relation])conflicting packages and relations that require non-existant packages
isConflict :: ConflictSet -> Bool
solutions :: Tree (State a, ConflictSet) -> [State a]
type Labeler a = CSP a -> Tree (State a) -> Tree (State a, ConflictSet)
search :: Labeler a -> CSP a -> [State a]
Backtracking Labeler
bt :: Labeler a
BackJumping Solver
bj :: CSP p -> Tree (State p, ConflictSet) -> Tree (State p, ConflictSet)

bj - backjumping labeler

If the node already has a conflict set, then leave it alone.

Otherwise, the conflictset for the node is the combination of the conflict sets of its direct children.

unionCS :: [ConflictSet] -> ConflictSet
combine :: CSP p -> [(State p, ConflictSet)] -> [ConflictSet] -> ConflictSet
Produced by Haddock version 0.8