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

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/0fec5de846707111285eaaa5994909759ca380f2

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

commit 0fec5de846707111285eaaa5994909759ca380f2
Author: Andres Loeh <[email protected]>
Date:   Sat Oct 29 12:15:15 2011 +0000

    when printing the install plan, show non-default flag assignments

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

 cabal-install/Distribution/Client/Install.hs |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/cabal-install/Distribution/Client/Install.hs 
b/cabal-install/Distribution/Client/Install.hs
index a4a0874..5644b72 100644
--- a/cabal-install/Distribution/Client/Install.hs
+++ b/cabal-install/Distribution/Client/Install.hs
@@ -19,7 +19,7 @@ module Distribution.Client.Install (
   ) where
 
 import Data.List
-         ( unfoldr, find, nub, sort )
+         ( unfoldr, find, nub, sort, (\\) )
 import Data.Maybe
          ( isJust, fromMaybe, maybeToList )
 import Control.Exception as Exception
@@ -102,7 +102,7 @@ import Distribution.Package
 import qualified Distribution.PackageDescription as PackageDescription
 import Distribution.PackageDescription
          ( Benchmark(..), PackageDescription, GenericPackageDescription(..)
-         , TestSuite(..) )
+         , TestSuite(..), Flag(..), FlagName(..), FlagAssignment )
 import Distribution.PackageDescription.Configuration
          ( finalizePackageDescription, mapTreeData )
 import Distribution.Version
@@ -433,7 +433,8 @@ printDryRun verbosity plan = case plan of
         "In order, the following would be installed (use -v for more details):"
       : map (display . packageId) (map fst pkgs)
   where
-    showPkgAndReason (pkg', pr) = display (packageId pkg') ++ " " ++
+    showPkgAndReason (pkg', pr) = display (packageId pkg') ++
+          showFlagAssignment (nonDefaultFlags pkg') ++ " " ++
           case pr of
             NewPackage   -> "(new package)"
             NewVersion _ -> "(new version)"
@@ -441,6 +442,22 @@ printDryRun verbosity plan = case plan of
                 []   -> ""
                 diff -> " changes: "  ++ intercalate ", " (map change diff)
 
+    toFlagAssignment :: [Flag] -> FlagAssignment
+    toFlagAssignment = map (\ f -> (flagName f, flagDefault f))
+
+    nonDefaultFlags :: ConfiguredPackage -> FlagAssignment
+    nonDefaultFlags (ConfiguredPackage spkg fa _) =
+      let defaultAssignment =
+            toFlagAssignment
+             (genPackageFlags (Source.packageDescription spkg))
+      in  fa \\ defaultAssignment
+
+    -- FIXME: this should be a proper function in a proper place
+    showFlagAssignment = concatMap ((' ' :) . showFlagValue)
+    showFlagValue (f, True)   = '+' : showFlagName f
+    showFlagValue (f, False)  = '-' : showFlagName f
+    showFlagName (FlagName f) = f
+
     change (OnlyInLeft pkgid)        = display pkgid ++ " removed"
     change (InBoth     pkgid pkgid') = display pkgid ++ " -> "
                                     ++ display (packageVersion pkgid')



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

Reply via email to