Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/9d650d2c1bfbcde077142b34860b4d0d224b9d60 >--------------------------------------------------------------- commit 9d650d2c1bfbcde077142b34860b4d0d224b9d60 Author: Duncan Coutts <[email protected]> Date: Sat Jun 7 18:26:00 2008 +0000 Use a smarter preference when picking a Cabal lib to build Setup.hs Instead of just using the latest version we use the best version according to the following preferences in priority order: - the same version as cabal-install was itself built with - the same major version number as cabal-install was built with - a stable version of Cabal (even second digit of major number) - the latest version >--------------------------------------------------------------- cabal-install/Hackage/SetupWrapper.hs | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-) diff --git a/cabal-install/Hackage/SetupWrapper.hs b/cabal-install/Hackage/SetupWrapper.hs index 0637732..13dc07a 100644 --- a/cabal-install/Hackage/SetupWrapper.hs +++ b/cabal-install/Hackage/SetupWrapper.hs @@ -23,7 +23,7 @@ module Hackage.SetupWrapper ( import qualified Distribution.Make as Make import qualified Distribution.Simple as Simple import Distribution.Version - ( Version(Version), VersionRange(..), withinRange ) + ( Version(..), VersionRange(..), withinRange ) import Distribution.Package ( PackageIdentifier(..), packageName, packageVersion, Dependency(..) ) import Distribution.PackageDescription @@ -47,7 +47,7 @@ import Distribution.Simple.GHC import qualified Distribution.Simple.PackageIndex as PackageIndex import Distribution.Simple.PackageIndex (PackageIndex) import Distribution.Simple.Utils - ( die, debug, cabalVersion, defaultPackageDesc + ( die, debug, cabalVersion, defaultPackageDesc, comparing , rawSystemExit, createDirectoryIfMissingVerbose ) import Distribution.Text ( display ) @@ -59,6 +59,7 @@ import System.FilePath ( (</>), (<.>) ) import System.IO.Error ( isDoesNotExistError ) import Control.Monad ( when, unless ) import Control.Exception ( evaluate ) +import Data.List ( maximumBy ) import Data.Maybe ( fromMaybe ) import Data.Monoid ( Monoid(mempty) ) import Data.Char ( isSpace ) @@ -191,7 +192,19 @@ externalSetupMethod options verbosity pkg bt mkargs = do [] -> die $ "The package requires Cabal library version " ++ display (useCabalVersion options) ++ " but no suitable version is installed." - pkgs -> return $ maximum (map packageVersion pkgs) + pkgs -> return $ bestVersion (map packageVersion pkgs) + where + bestVersion = maximumBy (comparing preference) + preference version = (sameVersion, sameMajorVersion + ,stableVersion, latestVersion) + where + sameVersion = version == cabalVersion + sameMajorVersion = majorVersion version == majorVersion cabalVersion + majorVersion = take 2 . versionBranch + stableVersion = case versionBranch version of + (_:x:_) -> even x + _ -> False + latestVersion = version configureCompiler :: SetupScriptOptions -> IO (Compiler, ProgramConfiguration, SetupScriptOptions) _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
