diff --git a/cabal-install/Distribution/Client/Sandbox.hs b/cabal-install/Distribution/Client/Sandbox.hs index f6770a4823203ab46c31f7e630cc60e4dc935d6b..1e05ee97c89f13176ffeddfede76fc77c51a50ed 100644 --- a/cabal-install/Distribution/Client/Sandbox.hs +++ b/cabal-install/Distribution/Client/Sandbox.hs @@ -108,6 +108,7 @@ import Control.Exception ( assert, bracket_ ) import Control.Monad ( forM, liftM2, unless, when ) import Data.Bits ( shiftL, shiftR, xor ) import Data.Char ( ord ) +import Data.Foldable ( forM_ ) import Data.IORef ( newIORef, writeIORef, readIORef ) import Data.List ( delete, foldl' ) import Data.Maybe ( fromJust ) @@ -176,7 +177,11 @@ updateSandboxConfigFileFlag globalFlags = case globalSandboxConfigFile globalFlags of Flag _ -> return globalFlags NoFlag -> do - f' <- fmap (maybe NoFlag Flag) . lookupEnv $ "CABAL_SANDBOX_CONFIG" + fp <- lookupEnv "CABAL_SANDBOX_CONFIG" + forM_ fp $ \fp' -> do -- Check for existence if environment variable set + exists <- doesFileExist fp' + unless exists $ die $ "Cabal sandbox file in $CABAL_SANDBOX_CONFIG does not exist: " ++ fp' + let f' = maybe NoFlag Flag fp return globalFlags { globalSandboxConfigFile = f' } -- | Return the path to the sandbox config file - either the default or the one