[commit: Cabal] master: Attempt to make things work using hugs, assume everything is installed (1f61912)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:51:31 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/1f619120acb3a8c011c146d376b4da7ff02f5b36
>---------------------------------------------------------------
commit 1f619120acb3a8c011c146d376b4da7ff02f5b36
Author: Duncan Coutts <duncan at haskell.org>
Date: Wed Mar 5 15:26:41 2008 +0000
Attempt to make things work using hugs, assume everything is installed
>---------------------------------------------------------------
cabal-install/Hackage/Dependency.hs | 24 ++++++++++++++++++++----
cabal-install/Hackage/Fetch.hs | 2 +-
cabal-install/Hackage/Install.hs | 4 ++--
3 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/cabal-install/Hackage/Dependency.hs b/cabal-install/Hackage/Dependency.hs
index 426c790..8175a23 100644
--- a/cabal-install/Hackage/Dependency.hs
+++ b/cabal-install/Hackage/Dependency.hs
@@ -45,26 +45,42 @@ import qualified Distribution.System (os)
--TODO: never expose the [ResolvedDependency], always gust make a DepGraph
resolveDependencies :: Compiler
- -> PackageIndex InstalledPackageInfo
+ -> Maybe (PackageIndex InstalledPackageInfo)
-> PackageIndex PkgInfo
-> [UnresolvedDependency]
-> [ResolvedDependency]
-resolveDependencies comp installed available deps =
+resolveDependencies comp (Just installed) available deps =
[ resolveDependency comp installed available dep flags
| UnresolvedDependency dep flags <- deps]
+resolveDependencies _ Nothing available deps =
+ resolveDependenciesBogusly available deps
+
+-- | We're using a compiler where we cannot track installed packages so just
+-- pretend everything is installed and hope for the best. Yay!
+resolveDependenciesBogusly :: PackageIndex PkgInfo
+ -> [UnresolvedDependency]
+ -> [ResolvedDependency]
+resolveDependenciesBogusly available = map resolveFromAvailable
+ where resolveFromAvailable (UnresolvedDependency dep flags) =
+ case latestAvailableSatisfying available dep of
+ Nothing -> UnavailableDependency dep
+ Just pkg -> AvailableDependency dep pkg flags []
-- | Resolve dependencies of a local package description. This is used
-- when the top-level package does not come from hackage.
resolveDependenciesLocal :: Compiler
- -> PackageIndex InstalledPackageInfo
+ -> Maybe (PackageIndex InstalledPackageInfo)
-> PackageIndex PkgInfo
-> GenericPackageDescription
-> FlagAssignment
-> [ResolvedDependency]
-resolveDependenciesLocal comp installed available desc flags =
+resolveDependenciesLocal comp (Just installed) available desc flags =
[ resolveDependency comp installed available dep flags
| dep <- getDependencies comp installed available desc flags ]
+-- When we do not know what is installed, let us just hope everything is ok:
+resolveDependenciesLocal _ Nothing _ _ _ = []
+
resolveDependency :: Compiler
-> PackageIndex InstalledPackageInfo -- ^ Installed packages.
-> PackageIndex PkgInfo -- ^ Installable packages
diff --git a/cabal-install/Hackage/Fetch.hs b/cabal-install/Hackage/Fetch.hs
index 0c9a8fa..e8c84ab 100644
--- a/cabal-install/Hackage/Fetch.hs
+++ b/cabal-install/Hackage/Fetch.hs
@@ -122,7 +122,7 @@ fetch :: Verbosity
-> [UnresolvedDependency]
-> IO ()
fetch verbosity packageDB repos comp conf deps
- = do Just installed <- getInstalledPackages verbosity comp packageDB conf
+ = do installed <- getInstalledPackages verbosity comp packageDB conf
available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos)
deps' <- IndexUtils.disambiguateDependencies available deps
let depTree = resolveDependencies comp installed available deps'
diff --git a/cabal-install/Hackage/Install.hs b/cabal-install/Hackage/Install.hs
index d24d490..565ae98 100644
--- a/cabal-install/Hackage/Install.hs
+++ b/cabal-install/Hackage/Install.hs
@@ -96,7 +96,7 @@ installLocalPackage :: Verbosity
installLocalPackage verbosity packageDB repos comp conf configFlags dryRun =
do cabalFile <- defaultPackageDesc verbosity
desc <- readPackageDescription verbosity cabalFile
- Just installed <- getInstalledPackages verbosity comp packageDB conf
+ installed <- getInstalledPackages verbosity comp packageDB conf
available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos)
let resolvedDeps = resolveDependenciesLocal comp installed available desc
(Cabal.configConfigurationsFlags configFlags)
@@ -124,7 +124,7 @@ installRepoPackages :: Verbosity
-> [UnresolvedDependency]
-> IO [(PackageIdentifier, BuildResult)]
installRepoPackages verbosity packageDB repos comp conf configFlags dryRun deps =
- do Just installed <- getInstalledPackages verbosity comp packageDB conf
+ do installed <- getInstalledPackages verbosity comp packageDB conf
available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos)
deps' <- IndexUtils.disambiguateDependencies available deps
let resolvedDeps = resolveDependencies comp installed available deps'
More information about the Cvs-libraries
mailing list