[commit: Cabal] master: Install phase pulls in test suite dependencies when necessary. (d4f6301)
Ian Lynagh
igloo at earth.li
Fri Jun 24 02:09:03 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/d4f63012bfa09c15f1ca9bc7aba373aeb3dac419
>---------------------------------------------------------------
commit d4f63012bfa09c15f1ca9bc7aba373aeb3dac419
Author: Thomas Tuegel <ttuegel at gmail.com>
Date: Mon Apr 18 11:05:29 2011 +0000
Install phase pulls in test suite dependencies when necessary.
>---------------------------------------------------------------
cabal-install/Distribution/Client/Install.hs | 21 +++++++++++++++++----
1 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs
index 0e05502..f678ee9 100644
--- a/cabal-install/Distribution/Client/Install.hs
+++ b/cabal-install/Distribution/Client/Install.hs
@@ -100,9 +100,9 @@ import Distribution.Package
, Dependency(..), thisPackageVersion )
import qualified Distribution.PackageDescription as PackageDescription
import Distribution.PackageDescription
- ( PackageDescription )
+ ( PackageDescription, GenericPackageDescription(..), TestSuite(..) )
import Distribution.PackageDescription.Configuration
- ( finalizePackageDescription )
+ ( finalizePackageDescription, mapTreeData )
import Distribution.Version
( Version, anyVersion, thisVersion )
import Distribution.Simple.Utils as Utils
@@ -249,11 +249,24 @@ planPackages comp configFlags configExFlags installFlags
[ PackageConstraintFlags (pkgSpecifierTarget pkgSpecifier) flags
| let flags = configConfigurationsFlags configFlags
, not (null flags)
- , pkgSpecifier <- pkgSpecifiers ]
+ , pkgSpecifier <- pkgSpecifiers' ]
. (if reinstall then reinstallTargets else id)
- $ standardInstallPolicy installedPkgIndex sourcePkgDb pkgSpecifiers
+ $ standardInstallPolicy installedPkgIndex sourcePkgDb pkgSpecifiers'
+
+ -- Mark test suites as enabled if invoked with '--enable-tests'. This
+ -- ensures that test suite dependencies are included.
+ pkgSpecifiers' = map enableTests pkgSpecifiers
+ testsEnabled = fromFlagOrDefault False $ configTests configFlags
+ enableTests (SpecificSourcePackage pkg) =
+ let pkgDescr = Source.packageDescription pkg
+ suites = condTestSuites pkgDescr
+ enable = mapTreeData (\t -> t { testEnabled = testsEnabled })
+ in SpecificSourcePackage $ pkg { Source.packageDescription = pkgDescr
+ { condTestSuites = map (\(n, t) -> (n, enable t)) suites } }
+ enableTests x = x
+
--TODO: this is a general feature and should be moved to D.C.Dependency
-- Also, the InstallPlan.remove should return info more precise to the
More information about the Cvs-libraries
mailing list