[commit: Cabal] : Handle constraints on paired packages (d9e161d)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:59:39 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch :
http://hackage.haskell.org/trac/ghc/changeset/d9e161d5f7f5340663e8c3aa30a34601eeab6d92
>---------------------------------------------------------------
commit d9e161d5f7f5340663e8c3aa30a34601eeab6d92
Author: Duncan Coutts <duncan at haskell.org>
Date: Sun Oct 5 05:19:19 2008 +0000
Handle constraints on paired packages
The trick is that when applying constraints to paired
packages, the constraint has to exclude both packages at
once. We exclude the pair together or not at all. If it
would only exclude one then we discard the constraint.
>---------------------------------------------------------------
.../Client/Dependency/TopDown/Constraints.hs | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs b/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs
index b08f11c..158eeb8 100644
--- a/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs
+++ b/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs
@@ -245,8 +245,15 @@ constrain (TaggedDependency installedConstraint (Dependency name versionRange))
satisfiesConstraint pkg = satisfiesVersionConstraint pkg
&& satisfiesInstallStateConstraint pkg
- satisfiesVersionConstraint pkg =
- packageVersion pkg `withinRange` versionRange
+ satisfiesVersionConstraint :: Package pkg => pkg -> Bool
+ satisfiesVersionConstraint = case Map.lookup name paired of
+ Nothing -> \pkg ->
+ packageVersion pkg `withinRange` versionRange
+ Just (v1, v2) -> \pkg -> case packageVersion pkg of
+ v | v == v1
+ || v == v2 -> v1 `withinRange` versionRange
+ || v2 `withinRange` versionRange
+ | otherwise -> v `withinRange` versionRange
satisfiesInstallStateConstraint = case installedConstraint of
NoInstalledConstraint -> \_ -> True
More information about the Cvs-libraries
mailing list