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
