Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch :
http://hackage.haskell.org/trac/ghc/changeset/6169c65b23265688f57cd2389cf77639ef4ec49e >--------------------------------------------------------------- commit 6169c65b23265688f57cd2389cf77639ef4ec49e Author: Duncan Coutts <[email protected]> Date: Sat Mar 20 21:53:31 2010 +0000 Cope with intra-package deps when constructing install plans >--------------------------------------------------------------- .../Distribution/Client/Dependency/TopDown.hs | 4 ++- cabal-install/Distribution/Client/InstallPlan.hs | 5 ++- cabal-install/Distribution/Client/PackageUtils.hs | 34 ++++++++++++++++++++ cabal-install/cabal-install.cabal | 1 + 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/cabal-install/Distribution/Client/Dependency/TopDown.hs b/cabal-install/Distribution/Client/Dependency/TopDown.hs index 95f4922..fbab018 100644 --- a/cabal-install/Distribution/Client/Dependency/TopDown.hs +++ b/cabal-install/Distribution/Client/Dependency/TopDown.hs @@ -36,6 +36,8 @@ import Distribution.Package , PackageFixedDeps(depends) ) import Distribution.PackageDescription ( PackageDescription(buildDepends) ) +import Distribution.Client.PackageUtils + ( externalBuildDepends ) import Distribution.PackageDescription.Configuration ( finalizePackageDescription, flattenPackageDescription ) import Distribution.Version @@ -301,7 +303,7 @@ configurePackage platform comp available spkg = case spkg of platform comp [] p of Left missing -> Left missing Right (pkg, flags') -> Right $ - SemiConfiguredPackage apkg flags' (buildDepends pkg) + SemiConfiguredPackage apkg flags' (externalBuildDepends pkg) dependencySatisfiable = not . null . PackageIndex.lookupDependency available diff --git a/cabal-install/Distribution/Client/InstallPlan.hs b/cabal-install/Distribution/Client/InstallPlan.hs index 953f6fd..71fa6a9 100644 --- a/cabal-install/Distribution/Client/InstallPlan.hs +++ b/cabal-install/Distribution/Client/InstallPlan.hs @@ -54,8 +54,9 @@ import Distribution.Version ( Version, withinRange ) import Distribution.PackageDescription ( GenericPackageDescription(genPackageFlags) - , PackageDescription(buildDepends) , Flag(flagName), FlagName(..) ) +import Distribution.Client.PackageUtils + ( externalBuildDepends ) import Distribution.PackageDescription.Configuration ( finalizePackageDescription ) import Distribution.Client.PackageIndex @@ -490,5 +491,5 @@ configuredPackageProblems platform comp platform comp [] (packageDescription pkg) of - Right (resolvedPkg, _) -> buildDepends resolvedPkg + Right (resolvedPkg, _) -> externalBuildDepends resolvedPkg Left _ -> error "configuredPackageInvalidDeps internal error" diff --git a/cabal-install/Distribution/Client/PackageUtils.hs b/cabal-install/Distribution/Client/PackageUtils.hs new file mode 100644 index 0000000..bd2b1df --- /dev/null +++ b/cabal-install/Distribution/Client/PackageUtils.hs @@ -0,0 +1,34 @@ +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Client.PackageUtils +-- Copyright : (c) Duncan Coutts 2010 +-- License : BSD-like +-- +-- Maintainer : [email protected] +-- Stability : provisional +-- Portability : portable +-- +-- Various package description utils that should be in the Cabal lib +----------------------------------------------------------------------------- +module Distribution.Client.PackageUtils ( + externalBuildDepends, + ) where + +import Distribution.Package + ( packageVersion, packageName, Dependency(..) ) +import Distribution.PackageDescription + ( PackageDescription(..) ) +import Distribution.Version + ( withinRange ) + +-- | The list of dependencies that refer to external packages +-- rather than internal package components. +-- +externalBuildDepends :: PackageDescription -> [Dependency] +externalBuildDepends pkg = filter (not . internal) (buildDepends pkg) + where + -- True if this dependency is an internal one (depends on a library + -- defined in the same package). + internal (Dependency depName versionRange) = + depName == packageName pkg && + packageVersion pkg `withinRange` versionRange diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal index 8a5cf0f..ba9f3e7 100644 --- a/cabal-install/cabal-install.cabal +++ b/cabal-install/cabal-install.cabal @@ -68,6 +68,7 @@ Executable cabal Distribution.Client.InstallSymlink Distribution.Client.List Distribution.Client.PackageIndex + Distribution.Client.PackageUtils Distribution.Client.Setup Distribution.Client.SetupWrapper Distribution.Client.SrcDist _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
