Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/bfcffe88c2eb2cfa3c7cd0947cf9999744b45a90

>---------------------------------------------------------------

commit bfcffe88c2eb2cfa3c7cd0947cf9999744b45a90
Author: Duncan Coutts <[email protected]>
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'



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to