[commit: Cabal] master: Update world file entries ignoring version constraints (2628f71)
Ian Lynagh
igloo at earth.li
Fri Jun 24 02:06:07 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/2628f71e0d655031629df86a30792c12cd163092
>---------------------------------------------------------------
commit 2628f71e0d655031629df86a30792c12cd163092
Author: Duncan Coutts <duncan at haskell.org>
Date: Mon May 10 03:24:57 2010 +0000
Update world file entries ignoring version constraints
Otherwise it is easy to add impossible constraints to the world file.
cabal install 'foo > 1' && cabal install 'foo < 1'
Would give us a world file with both constraints.
>---------------------------------------------------------------
cabal-install/Distribution/Client/World.hs | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/cabal-install/Distribution/Client/World.hs b/cabal-install/Distribution/Client/World.hs
index 1c9f117..3708033 100644
--- a/cabal-install/Distribution/Client/World.hs
+++ b/cabal-install/Distribution/Client/World.hs
@@ -48,10 +48,9 @@ import System.IO.Error( isDoesNotExistError, )
import qualified Data.ByteString.Lazy.Char8 as B
import Prelude hiding ( getContents )
-
-- | Adds packages to the world file; creates the file if it doesn't
--- exist yet. Flag assignments for a package are updated if already
--- present. IO errors are non-fatal.
+-- exist yet. Version constraints and flag assignments for a package are
+-- updated if already present. IO errors are non-fatal.
insert :: Verbosity -> Bool -> FilePath -> [UnresolvedDependency] -> IO ()
insert = modifyWorld $ unionBy equalUDep
@@ -64,7 +63,8 @@ delete = modifyWorld $ flip (deleteFirstsBy equalUDep)
-- | UnresolvedDependency values are considered equal if they refer to
-- the same package, i.e., we don't care about differing versions or flags.
equalUDep :: UnresolvedDependency -> UnresolvedDependency -> Bool
-equalUDep u1 u2 = dependency u1 == dependency u2
+equalUDep (UnresolvedDependency (Dependency pkg1 _) _)
+ (UnresolvedDependency (Dependency pkg2 _) _) = pkg1 == pkg2
-- | Modifies the world file by applying an update-function ('unionBy'
-- for 'insert', 'deleteFirstsBy' for 'delete') to the given list of
More information about the Cvs-libraries
mailing list