[commit: Cabal] master: Fix cabal haddock for packages with internal dependencies (1cb5d96)
Ian Lynagh
igloo at earth.li
Tue Jul 19 15:25:52 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/1cb5d96359c082b5e3c46095e2bd16b6e5b23061
>---------------------------------------------------------------
commit 1cb5d96359c082b5e3c46095e2bd16b6e5b23061
Author: Duncan Coutts <duncan at community.haskell.org>
Date: Mon Jul 18 23:57:28 2011 +0000
Fix cabal haddock for packages with internal dependencies
>---------------------------------------------------------------
cabal/Distribution/Simple/Haddock.hs | 5 +++--
cabal/Distribution/Simple/LocalBuildInfo.hs | 14 +++++++++-----
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/cabal/Distribution/Simple/Haddock.hs b/cabal/Distribution/Simple/Haddock.hs
index ffcf2d0..47ed428 100644
--- a/cabal/Distribution/Simple/Haddock.hs
+++ b/cabal/Distribution/Simple/Haddock.hs
@@ -442,8 +442,9 @@ haddockPackageFlags lbi htmlTemplate = do
let allPkgs = installedPkgs lbi
directDeps = map fst (externalPackageDeps lbi)
transitiveDeps <- case dependencyClosure allPkgs directDeps of
- Left x -> return x
- Right _ -> die "Can't find transitive deps for haddock"
+ Left x -> return x
+ Right inf -> die $ "internal error when calculating transative "
+ ++ "package dependencies.\nDebug info: " ++ show inf
interfaces <- sequence
[ case interfaceAndHtmlPath ipkg of
Nothing -> return (Left (packageId ipkg))
diff --git a/cabal/Distribution/Simple/LocalBuildInfo.hs b/cabal/Distribution/Simple/LocalBuildInfo.hs
index 8fa4f27..1e16f3e 100644
--- a/cabal/Distribution/Simple/LocalBuildInfo.hs
+++ b/cabal/Distribution/Simple/LocalBuildInfo.hs
@@ -140,13 +140,17 @@ data LocalBuildInfo = LocalBuildInfo {
progSuffix :: PathTemplate -- ^Suffix to be appended to installed executables
} deriving (Read, Show)
--- | External package dependencies for the package as a whole, the union of the
--- individual 'targetPackageDeps'.
+-- | External package dependencies for the package as a whole. This is the
+-- union of the individual 'componentPackageDeps', less any internal deps.
externalPackageDeps :: LocalBuildInfo -> [(InstalledPackageId, PackageId)]
-externalPackageDeps lbi = nub $
+externalPackageDeps lbi = filter (not . internal . snd) $ nub $
-- TODO: what about non-buildable components?
- maybe [] componentPackageDeps (libraryConfig lbi)
- ++ concatMap (componentPackageDeps . snd) (executableConfigs lbi)
+ maybe [] componentPackageDeps (libraryConfig lbi)
+ ++ concatMap (componentPackageDeps . snd) (executableConfigs lbi)
+ where
+ -- True if this dependency is an internal one (depends on the library
+ -- defined in the same package).
+ internal pkgid = pkgid == packageId (localPkgDescr lbi)
-- | The installed package Id we use for local packages registered in the local
-- package db. This is what is used for intra-package deps between components.
More information about the Cvs-libraries
mailing list