diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index f1addb453c8339bf4421f1b9fa6c46094133830e..24068f9224c23f73812a9cbd90fdfd3f2bb135f3 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 b9ef2dc1191239b4a7a159714749d53b8396864e..c99592d7b5f53ad59f72aae9b15a24c74c658a6a 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