[commit: Cabal] master: Fix bug where contraints where lost for case insensitive package matches (dceb8d4)
Ian Lynagh
igloo at earth.li
Fri Jun 24 02:09:11 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/dceb8d4d99e484e5872872520a21fca143a46afa
>---------------------------------------------------------------
commit dceb8d4d99e484e5872872520a21fca143a46afa
Author: Duncan Coutts <duncan at community.haskell.org>
Date: Tue May 3 14:49:32 2011 +0000
Fix bug where contraints where lost for case insensitive package matches
E.g. cabal install cabal-1.8.0.6 would actually install the latest version
instead, because when 'cabal' got corrected to 'Cabal' the associated
constraint 'cabal == 1.8.0.6' was not converted to 'Cabal == 1.8.0.6'.
>---------------------------------------------------------------
cabal-install/Distribution/Client/Targets.hs | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/cabal-install/Distribution/Client/Targets.hs b/cabal-install/Distribution/Client/Targets.hs
index 5466220..197cc2b 100644
--- a/cabal-install/Distribution/Client/Targets.hs
+++ b/cabal-install/Distribution/Client/Targets.hs
@@ -574,7 +574,9 @@ disambiguatePackageTargets availablePkgIndex availableExtra targets =
pkgname userTarget)
Ambiguous pkgnames -> Left (PackageNameAmbigious
pkgname pkgnames userTarget)
- Unambiguous pkgname' -> Right (NamedPackage pkgname' constraints)
+ Unambiguous pkgname' -> Right (NamedPackage pkgname' constraints')
+ where
+ constraints' = map (renamePackageConstraint pkgname') constraints
-- use any extra specific available packages to help us disambiguate
packageNameEnv :: PackageNameEnv
@@ -682,6 +684,13 @@ userToPackageConstraint uc = case uc of
UserConstraintSource name -> PackageConstraintSource name
UserConstraintFlags name flags -> PackageConstraintFlags name flags
+renamePackageConstraint :: PackageName -> PackageConstraint -> PackageConstraint
+renamePackageConstraint name pc = case pc of
+ PackageConstraintVersion _ ver -> PackageConstraintVersion name ver
+ PackageConstraintInstalled _ -> PackageConstraintInstalled name
+ PackageConstraintSource _ -> PackageConstraintSource name
+ PackageConstraintFlags _ flags -> PackageConstraintFlags name flags
+
readUserConstraint :: String -> Either String UserConstraint
readUserConstraint str =
case readPToMaybe parse str of
More information about the Cvs-libraries
mailing list