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

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/8b990e56b9cf972b7c61a991e8bbc348d873215a

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

commit 8b990e56b9cf972b7c61a991e8bbc348d873215a
Author: Jens Petersen <[email protected]>
Date:   Wed Oct 26 12:40:24 2011 +0000

    add --override-reinstall-check option
    
    This option flag overrides the new destructive reinstalls check,
    allowing forcing overwriting already installed library versions.
    The patch also documents this flag and other softer options
    in the output of printPlanMessages, which is renamed to checkPrintPlan.

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

 cabal-install/Distribution/Client/Fetch.hs   |    2 +-
 cabal-install/Distribution/Client/Install.hs |   27 +++++++++++++++----------
 cabal-install/Distribution/Client/Setup.hs   |    9 ++++++++
 3 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/cabal-install/Distribution/Client/Fetch.hs 
b/cabal-install/Distribution/Client/Fetch.hs
index 6f76a34..1198261 100644
--- a/cabal-install/Distribution/Client/Fetch.hs
+++ b/cabal-install/Distribution/Client/Fetch.hs
@@ -142,7 +142,7 @@ planPackages verbosity comp fetchFlags
 
         -- Reinstall the targets given on the command line so that the dep
         -- resolver will decide that they need fetching, even if they're
-        -- already installed. Sicne we want to get the source packages of
+        -- already installed. Since we want to get the source packages of
         -- things we might have installed (but not have the sources for).
         reinstallTargets
 
diff --git a/cabal-install/Distribution/Client/Install.hs 
b/cabal-install/Distribution/Client/Install.hs
index b355ad1..59bb6fa 100644
--- a/cabal-install/Distribution/Client/Install.hs
+++ b/cabal-install/Distribution/Client/Install.hs
@@ -172,7 +172,7 @@ install verbosity packageDBs repos comp conf
                          comp configFlags configExFlags installFlags
                          installedPkgIndex sourcePkgDb pkgSpecifiers
 
-    printPlanMessages verbosity installedPkgIndex installPlan dryRun
+    checkPrintPlan verbosity installedPkgIndex installPlan installFlags
 
     unless dryRun $ do
       installPlan' <- performInstallations verbosity
@@ -332,12 +332,12 @@ planPackages comp configFlags configExFlags installFlags
 -- * Informational messages
 -- ------------------------------------------------------------
 
-printPlanMessages :: Verbosity
-                  -> PackageIndex
-                  -> InstallPlan
-                  -> Bool
-                  -> IO ()
-printPlanMessages verbosity installed installPlan dryRun = do
+checkPrintPlan :: Verbosity
+               -> PackageIndex
+               -> InstallPlan
+               -> InstallFlags
+               -> IO ()
+checkPrintPlan verbosity installed installPlan installFlags = do
 
   when nothingToInstall $
     notice verbosity $
@@ -354,13 +354,18 @@ printPlanMessages verbosity installed installPlan dryRun 
= do
     printDryRun adaptedVerbosity lPlan
 
   when containsReinstalls $
-    (if dryRun then notice adaptedVerbosity else die) $
-         "The install plan contains reinstalls which can break your "
-      ++ "GHC installation."
-  -- TODO: Add pointers to flags once implemented.
+    (if dryRun || overrideReinstall then notice adaptedVerbosity else die) $
+         "The install plan contains reinstalls which can break "
+      ++ "your GHC installation.\nYou can use the --avoid-reinstalls option "
+      ++ "to try to avoid this or try\nto ghc-pkg unregister the version of "
+      ++ "the package version to see its effect\non reverse dependencies.  " 
+      ++ "If you know what you are doing you can use\nthe " 
+      ++ "--override-reinstall-check option to override this reinstall check."
 
   where
     nothingToInstall = null (InstallPlan.ready installPlan)
+    dryRun = fromFlag (installDryRun installFlags)
+    overrideReinstall = fromFlag (installOverrideReinstall installFlags)
 
 linearizeInstallPlan :: PackageIndex
                      -> InstallPlan
diff --git a/cabal-install/Distribution/Client/Setup.hs 
b/cabal-install/Distribution/Client/Setup.hs
index 6911480..e35a476 100644
--- a/cabal-install/Distribution/Client/Setup.hs
+++ b/cabal-install/Distribution/Client/Setup.hs
@@ -575,6 +575,7 @@ data InstallFlags = InstallFlags {
     installDryRun           :: Flag Bool,
     installReinstall        :: Flag Bool,
     installAvoidReinstalls  :: Flag Bool,
+    installOverrideReinstall :: Flag Bool,
     installMaxBackjumps     :: Flag Int,
     installUpgradeDeps      :: Flag Bool,
     installReorderGoals     :: Flag Bool,
@@ -596,6 +597,7 @@ defaultInstallFlags = InstallFlags {
     installDryRun          = Flag False,
     installReinstall       = Flag False,
     installAvoidReinstalls = Flag False,
+    installOverrideReinstall = Flag False,
     installMaxBackjumps    = Flag defaultMaxBackjumps,
     installUpgradeDeps     = Flag False,
     installReorderGoals    = Flag False,
@@ -694,6 +696,11 @@ installOptions showOrParseArgs =
           installAvoidReinstalls (\v flags -> flags { installAvoidReinstalls = 
v })
           trueArg
 
+      , option [] ["override-reinstall-check"]
+          "Use to override the check that prevents reinstalling already 
installed versions of package dependencies."
+          installOverrideReinstall (\v flags -> flags { 
installOverrideReinstall = v })
+          trueArg
+
       , option [] ["max-backjumps"]
           ("Maximum number of backjumps allowed while solving (default: " ++ 
show defaultMaxBackjumps ++ "). Use a negative number to enable unlimited 
backtracking. Use 0 to disable backtracking completely.")
           installMaxBackjumps (\v flags -> flags { installMaxBackjumps = v })
@@ -771,6 +778,7 @@ instance Monoid InstallFlags where
     installDryRun          = mempty,
     installReinstall       = mempty,
     installAvoidReinstalls = mempty,
+    installOverrideReinstall = mempty,
     installMaxBackjumps    = mempty,
     installUpgradeDeps     = mempty,
     installReorderGoals    = mempty,
@@ -790,6 +798,7 @@ instance Monoid InstallFlags where
     installDryRun          = combine installDryRun,
     installReinstall       = combine installReinstall,
     installAvoidReinstalls = combine installAvoidReinstalls,
+    installOverrideReinstall = combine installOverrideReinstall,
     installMaxBackjumps    = combine installMaxBackjumps,
     installUpgradeDeps     = combine installUpgradeDeps,
     installReorderGoals    = combine installReorderGoals,



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

Reply via email to