From 7a8d9c076d0d9f668326821d352d2e199cff8fdc Mon Sep 17 00:00:00 2001 From: Mikhail Glushenkov <mikhail.glushenkov@gmail.com> Date: Wed, 24 Jul 2013 15:07:26 +0200 Subject: [PATCH] Improve an error message. See #1362. --- cabal-install/Distribution/Client/Install.hs | 10 +++++++++- cabal-install/Distribution/Client/Sandbox.hs | 9 ++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index f1addb453c..24068f9224 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -173,7 +173,7 @@ install verbosity packageDBs repos comp platform conf useSandbox mSandboxPkgInfo userTargets0 = do installContext <- makeInstallContext verbosity args (Just userTargets0) - installPlan <- foldProgress logMsg die return =<< + installPlan <- foldProgress logMsg die' return =<< makeInstallPlan verbosity args installContext processInstallPlan verbosity args installContext installPlan @@ -183,6 +183,14 @@ install verbosity packageDBs repos comp platform conf useSandbox mSandboxPkgInfo globalFlags, configFlags, configExFlags, installFlags, haddockFlags) + die' message = die (message ++ if isUseSandbox useSandbox + then installFailedInSandbox else []) + -- TODO: use a better error message, remove duplication. + installFailedInSandbox = + "Note: when using a sandbox, all packages are required to have \ + \consistent dependencies. \ + \Try reinstalling/unregistering the offending packages or \ + \recreating the sandbox." logMsg message rest = debugNoWrap verbosity message >> rest -- TODO: Make InstallContext a proper datatype with documented fields. diff --git a/cabal-install/Distribution/Client/Sandbox.hs b/cabal-install/Distribution/Client/Sandbox.hs index b9ef2dc119..c99592d7b5 100644 --- a/cabal-install/Distribution/Client/Sandbox.hs +++ b/cabal-install/Distribution/Client/Sandbox.hs @@ -542,7 +542,7 @@ reinstallAddSourceDeps verbosity configFlags' configExFlags -- might want to use some lower-level features this in the future. withSandboxBinDirOnSearchPath sandboxDir $ do installContext <- makeInstallContext verbosity args Nothing - installPlan <- foldProgress logMsg die return =<< + installPlan <- foldProgress logMsg die' return =<< makeInstallPlan verbosity args installContext processInstallPlan verbosity args installContext installPlan @@ -551,6 +551,13 @@ reinstallAddSourceDeps verbosity configFlags' configExFlags readIORef retVal where + die' message = die (message ++ installFailedInSandbox) + -- TODO: use a better error message, remove duplication. + installFailedInSandbox = + "Note: when using a sandbox, all packages are required to have \ + \consistent dependencies. \ + \Try reinstalling/unregistering the offending packages or \ + \recreating the sandbox." logMsg message rest = debugNoWrap verbosity message >> rest topHandler' = topHandlerWith $ \_ -> do -- GitLab