[commit: Cabal] master: Mostly renaming and trivial refactoring (80ce52c)
Ian Lynagh
igloo at earth.li
Fri Jun 24 02:01:00 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/80ce52ccb26badb12341ebaa68b41855f23b3305
>---------------------------------------------------------------
commit 80ce52ccb26badb12341ebaa68b41855f23b3305
Author: Duncan Coutts <duncan at haskell.org>
Date: Mon Dec 15 22:10:34 2008 +0000
Mostly renaming and trivial refactoring
>---------------------------------------------------------------
.../Distribution/Client/Dependency/Bogus.hs | 24 ++++++++++------
.../Distribution/Client/Dependency/TopDown.hs | 29 +++++++++++---------
2 files changed, 31 insertions(+), 22 deletions(-)
diff --git a/cabal-install/Distribution/Client/Dependency/Bogus.hs b/cabal-install/Distribution/Client/Dependency/Bogus.hs
index 69f9482..6fc5c0f 100644
--- a/cabal-install/Distribution/Client/Dependency/Bogus.hs
+++ b/cabal-install/Distribution/Client/Dependency/Bogus.hs
@@ -16,14 +16,15 @@ module Distribution.Client.Dependency.Bogus (
) where
import Distribution.Client.Types
- ( UnresolvedDependency(..), AvailablePackage(..), ConfiguredPackage(..) )
+ ( AvailablePackage(..), ConfiguredPackage(..) )
import Distribution.Client.Dependency.Types
( DependencyResolver, Progress(..)
, PackageConstraint(..) )
import qualified Distribution.Client.InstallPlan as InstallPlan
import Distribution.Package
- ( PackageName, PackageIdentifier(..), Dependency(..), Package(..) )
+ ( PackageName, PackageIdentifier(..), Dependency(..)
+ , Package(..), packageVersion )
import Distribution.PackageDescription
( GenericPackageDescription(..), CondTree(..), FlagAssignment )
import Distribution.PackageDescription.Configuration
@@ -55,8 +56,8 @@ bogusResolver (Platform arch os) comp _ available _ constraints targets =
resolveFromAvailable [] (combineConstraints constraints targets)
where
resolveFromAvailable chosen [] = Done chosen
- resolveFromAvailable chosen (UnresolvedDependency dep flags : deps) =
- case latestAvailableSatisfying available dep of
+ resolveFromAvailable chosen ((name, verConstraint, flags): deps) =
+ case latestAvailableSatisfying available name verConstraint of
Nothing -> Fail ("Unresolved dependency: " ++ display dep)
Just apkg@(AvailablePackage _ pkg _) ->
case finalizePackageDescription flags none os arch comp [] pkg of
@@ -69,6 +70,8 @@ bogusResolver (Platform arch os) comp _ available _ constraints targets =
where
none :: Maybe (PackageIndex PackageIdentifier)
none = Nothing
+ where
+ dep = Dependency name verConstraint
fudgeChosenPackage :: AvailablePackage -> FlagAssignment -> ConfiguredPackage
fudgeChosenPackage (AvailablePackage pkgid pkg source) flags =
@@ -94,9 +97,9 @@ fudgeChosenPackage (AvailablePackage pkgid pkg source) flags =
combineConstraints :: [PackageConstraint]
-> [PackageName]
- -> [UnresolvedDependency]
+ -> [(PackageName, VersionRange, FlagAssignment)]
combineConstraints constraints targets =
- [ UnresolvedDependency (Dependency name ver) flags
+ [ (name, ver, flags)
| name <- targets
, let ver = fromMaybe AnyVersion (Map.lookup name versionConstraints)
flags = fromMaybe [] (Map.lookup name flagsConstraints) ]
@@ -111,9 +114,12 @@ combineConstraints constraints targets =
-- | Gets the latest available package satisfying a dependency.
latestAvailableSatisfying :: PackageIndex AvailablePackage
- -> Dependency
+ -> PackageName -> VersionRange
-> Maybe AvailablePackage
-latestAvailableSatisfying index dep =
+latestAvailableSatisfying index name versionConstraint =
case PackageIndex.lookupDependency index dep of
[] -> Nothing
- pkgs -> Just (maximumBy (comparing (pkgVersion . packageId)) pkgs)
+ pkgs -> Just (maximumBy best pkgs)
+ where
+ dep = Dependency name versionConstraint
+ best = comparing packageVersion
diff --git a/cabal-install/Distribution/Client/Dependency/TopDown.hs b/cabal-install/Distribution/Client/Dependency/TopDown.hs
index 47c05d4..c51eeba 100644
--- a/cabal-install/Distribution/Client/Dependency/TopDown.hs
+++ b/cabal-install/Distribution/Client/Dependency/TopDown.hs
@@ -41,7 +41,7 @@ import Distribution.PackageDescription
import Distribution.PackageDescription.Configuration
( finalizePackageDescription, flattenPackageDescription )
import Distribution.Version
- ( withinRange )
+ ( VersionRange, withinRange )
import Distribution.Compiler
( CompilerId )
import Distribution.System
@@ -237,16 +237,17 @@ topDownResolver' :: Platform -> CompilerId
-> [PackageConstraint]
-> [PackageName]
-> Progress Log Failure [PlanPackage]
-topDownResolver' platform comp installed available pref deps targets =
+topDownResolver' platform comp installed available
+ userPreferences userConstraints targets =
fmap (uncurry finalise)
- . (\cs -> search configure pref cs initialPkgNames)
- =<< constrainTopLevelDeps deps constraints
+ . (\cs -> search configure userPreferences cs initialPkgNames)
+ =<< constrainTopLevelDeps userConstraints constraints
where
configure = configurePackage platform comp
constraints = Constraints.empty
- (annotateInstalledPackages topSortNumber installed')
- (annotateAvailablePackages deps topSortNumber available')
+ (annotateInstalledPackages topSortNumber installed')
+ (annotateAvailablePackages userConstraints topSortNumber available')
(installed', available') = selectNeededSubset installed available
initialPkgNames
topSortNumber = topologicalSortNumbering installed' available'
@@ -256,7 +257,7 @@ topDownResolver' platform comp installed available pref deps targets =
finalise selected = PackageIndex.allPackages
. improvePlan installed'
. PackageIndex.fromList
- . finaliseSelectedPackages pref selected
+ . finaliseSelectedPackages userPreferences selected
constrainTopLevelDeps :: [PackageConstraint] -> Constraints
-> Progress a Failure Constraints
@@ -264,7 +265,7 @@ constrainTopLevelDeps [] cs = Done cs
constrainTopLevelDeps (PackageFlagsConstraint _ _ :deps) cs =
constrainTopLevelDeps deps cs
constrainTopLevelDeps (PackageVersionConstraint pkg ver:deps) cs =
- case addTopLevelDependencyConstraint dep cs of
+ case addTopLevelVersionConstraint pkg ver cs of
Satisfiable cs' _ -> constrainTopLevelDeps deps cs'
Unsatisfiable -> Fail (TopLevelDependencyUnsatisfiable dep)
ConflictsWith conflicts -> Fail (TopLevelDependencyConflict dep conflicts)
@@ -513,14 +514,16 @@ addPackageDependencyConstraint pkgid dep constraints =
where
reason = ExcludedByPackageDependency pkgid dep
-addTopLevelDependencyConstraint :: Dependency -> Constraints
- -> Satisfiable Constraints
- [PackageIdentifier] ExclusionReason
-addTopLevelDependencyConstraint dep constraints =
+addTopLevelVersionConstraint :: PackageName -> VersionRange
+ -> Constraints
+ -> Satisfiable Constraints
+ [PackageIdentifier] ExclusionReason
+addTopLevelVersionConstraint pkg ver constraints =
Constraints.constrain taggedDep reason constraints
where
+ dep = Dependency pkg ver
taggedDep = TaggedDependency NoInstalledConstraint dep
- reason = ExcludedByTopLevelDependency dep
+ reason = ExcludedByTopLevelDependency dep
-- ------------------------------------------------------------
-- * Reasons for constraints
More information about the Cvs-libraries
mailing list