diff --git a/Cabal/Cabal.cabal b/Cabal/Cabal.cabal index 8c820f4ec690c1929e85112dc1ef7c54fbb0e8c8..88598a59f00283b7bf55a4597ca41daa2dffb1ec 100644 --- a/Cabal/Cabal.cabal +++ b/Cabal/Cabal.cabal @@ -141,6 +141,7 @@ library exposed-modules: Distribution.Compat.Environment + Distribution.Compat.Exception Distribution.Compat.ReadP Distribution.Compiler Distribution.InstalledPackageInfo @@ -208,7 +209,6 @@ library other-modules: Distribution.Compat.CopyFile - Distribution.Compat.Exception Distribution.Compat.TempFile Distribution.GetOpt Distribution.Simple.GHC.IPI641 diff --git a/Cabal/Distribution/Compat/Exception.hs b/Cabal/Distribution/Compat/Exception.hs index 2949b1635f780ec1487c8852372afee8dfe2f124..a1e3eeb18e33d3f985067a9c47ea9d30b2c1306d 100644 --- a/Cabal/Distribution/Compat/Exception.hs +++ b/Cabal/Distribution/Compat/Exception.hs @@ -1,12 +1,33 @@ +{-# LANGUAGE CPP #-} module Distribution.Compat.Exception ( - catchIO, - catchExit, - tryIO, + mask, + mask_, + catchIO, + catchExit, + tryIO, ) where import System.Exit import qualified Control.Exception as Exception +#if MIN_VERSION_base(4,3,0) +-- it's much less of a headache if we re-export the "real" mask and mask_ +-- so there's never more than one definition to conflict +import Control.Exception (mask, mask_) +#else +import Control.Exception (block, unblock) +#endif + +#if !MIN_VERSION_base(4,3,0) +-- note: less polymorphic than 'real' mask, to avoid RankNTypes +-- we don't need the full generality where we use it +mask :: ((IO a -> IO a) -> IO b) -> IO b +mask handler = block (handler unblock) + +mask_ :: IO a -> IO a +mask_ = block +#endif + tryIO :: IO a -> IO (Either Exception.IOException a) tryIO = Exception.try diff --git a/cabal-install/Distribution/Client/Compat/Environment.hs b/cabal-install/Distribution/Client/Compat/Environment.hs index 1070b767bc6122ad5710b71547f6ab8f7de22675..20a3f29c43553b8c86b783bfe2a15b6f00cecd95 100644 --- a/cabal-install/Distribution/Client/Compat/Environment.hs +++ b/cabal-install/Distribution/Client/Compat/Environment.hs @@ -33,7 +33,7 @@ import Foreign.C.Error (throwErrnoIfMinus1_) import System.Environment (lookupEnv) #else import System.Environment (getEnv) -import Distribution.Client.Compat.Exception (catchIO) +import Distribution.Compat.Exception (catchIO) #endif import System.Posix.Internals ( withFilePath ) diff --git a/cabal-install/Distribution/Client/Compat/Exception.hs b/cabal-install/Distribution/Client/Compat/Exception.hs deleted file mode 100644 index b4896df6a950bb631e8830e690413c8824c7b455..0000000000000000000000000000000000000000 --- a/cabal-install/Distribution/Client/Compat/Exception.hs +++ /dev/null @@ -1,35 +0,0 @@ -{-# LANGUAGE CPP #-} -{-# OPTIONS_HADDOCK hide #-} -module Distribution.Client.Compat.Exception ( - mask, - mask_, - catchIO, - catchExit, - ) where - -import System.Exit -import qualified Control.Exception as Exception - -#if MIN_VERSION_base(4,3,0) --- it's much less of a headache if we re-export the "real" mask and mask_ --- so there's never more than one definition to conflict -import Control.Exception (mask, mask_) -#else -import Control.Exception (block, unblock) -#endif - -#if !MIN_VERSION_base(4,3,0) --- note: less polymorphic than 'real' mask, to avoid RankNTypes --- we don't need the full generality where we use it -mask :: ((IO a -> IO a) -> IO b) -> IO b -mask handler = block (handler unblock) - -mask_ :: IO a -> IO a -mask_ = block -#endif - -catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a -catchIO = Exception.catch - -catchExit :: IO a -> (ExitCode -> IO a) -> IO a -catchExit = Exception.catch diff --git a/cabal-install/Distribution/Client/Compat/Semaphore.hs b/cabal-install/Distribution/Client/Compat/Semaphore.hs index 71e4c818c73f149b656515d0baaf5f8ae573d2a6..274cc2e24464d2a891d321210ddabb2583cb018e 100644 --- a/cabal-install/Distribution/Client/Compat/Semaphore.hs +++ b/cabal-install/Distribution/Client/Compat/Semaphore.hs @@ -13,7 +13,7 @@ import Control.Exception (onException) import Control.Monad (join, when) import Data.Typeable (Typeable) -import Distribution.Client.Compat.Exception (mask_) +import Distribution.Compat.Exception (mask_) -- | 'QSem' is a quantity semaphore in which the resource is aqcuired -- and released in units of one. It provides guaranteed FIFO ordering diff --git a/cabal-install/Distribution/Client/Config.hs b/cabal-install/Distribution/Client/Config.hs index 12ee5f03953bf2d1a949731f97e5a890aab30ff9..2e5267ed8a5483c9c8bc9b6f42ecc517a37557d3 100644 --- a/cabal-install/Distribution/Client/Config.hs +++ b/cabal-install/Distribution/Client/Config.hs @@ -100,11 +100,11 @@ import Network.URI ( URI(..), URIAuth(..) ) import System.FilePath ( (<.>), (</>), takeDirectory ) -import Distribution.Compat.Environment - ( getEnvironment ) import System.IO.Error ( isDoesNotExistError ) -import Distribution.Client.Compat.Exception +import Distribution.Compat.Environment + ( getEnvironment ) +import Distribution.Compat.Exception ( catchIO ) -- diff --git a/cabal-install/Distribution/Client/IndexUtils.hs b/cabal-install/Distribution/Client/IndexUtils.hs index 50950fe0fb55cd8999aeeeaf8758c12708716155..158cad3b02bd6462725d7d4166fefb5ea6f7f12b 100644 --- a/cabal-install/Distribution/Client/IndexUtils.hs +++ b/cabal-install/Distribution/Client/IndexUtils.hs @@ -70,7 +70,7 @@ import qualified Data.ByteString.Char8 as BSS import Data.ByteString.Lazy (ByteString) import Distribution.Client.GZipUtils (maybeDecompress) import Distribution.Client.Utils (byteStringToFilePath) -import Distribution.Client.Compat.Exception (catchIO) +import Distribution.Compat.Exception (catchIO) import Distribution.Client.Compat.Time import System.FilePath ((</>), takeExtension, splitDirectories, normalise) import System.FilePath.Posix as FilePath.Posix diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index 2b84250a4f9fc9d05f3dbe99abfcc2db8a998b80..24068f9224c23f73812a9cbd90fdfd3f2bb135f3 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -37,7 +37,7 @@ import Control.Exception as Exception , IOException, SomeException ) import System.Exit ( ExitCode ) -import Distribution.Client.Compat.Exception +import Distribution.Compat.Exception ( catchIO, catchExit ) import Control.Monad ( when, unless ) diff --git a/cabal-install/Distribution/Client/InstallSymlink.hs b/cabal-install/Distribution/Client/InstallSymlink.hs index c8eac4ed014c00611730f58a6ed088ac74f7cb38..b51a5fb14dd38ad174154b003c39973b2df165d8 100644 --- a/cabal-install/Distribution/Client/InstallSymlink.hs +++ b/cabal-install/Distribution/Client/InstallSymlink.hs @@ -65,7 +65,7 @@ import System.FilePath import Prelude hiding (ioError) import System.IO.Error ( isDoesNotExistError, ioError ) -import Distribution.Client.Compat.Exception ( catchIO ) +import Distribution.Compat.Exception ( catchIO ) import Control.Exception ( assert ) import Data.Maybe diff --git a/cabal-install/Distribution/Client/JobControl.hs b/cabal-install/Distribution/Client/JobControl.hs index 4f8229c00af211443c80314424d14fa7fec8e5a9..326f8e04df30e117f0d922b3213f3c807231001f 100644 --- a/cabal-install/Distribution/Client/JobControl.hs +++ b/cabal-install/Distribution/Client/JobControl.hs @@ -29,7 +29,7 @@ module Distribution.Client.JobControl ( import Control.Monad import Control.Concurrent hiding (QSem, newQSem, waitQSem, signalQSem) import Control.Exception (SomeException, bracket_, throw, try) -import Distribution.Client.Compat.Exception (mask) +import Distribution.Compat.Exception (mask) import Distribution.Client.Compat.Semaphore data JobControl m a = JobControl { diff --git a/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs b/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs index d4d41cbcd95eb34eeec5ca4c1a05a00019d94a7f..db0a6145dac6cc984984f2b169393a9b1710660c 100644 --- a/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs +++ b/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs @@ -53,8 +53,7 @@ import Distribution.Verbosity ( Verbosity, normal ) import Control.Monad ( foldM, when, unless ) import Data.List ( partition ) import Data.Monoid ( Monoid(..) ) -import Distribution.Client.Compat.Exception - ( catchIO ) +import Distribution.Compat.Exception ( catchIO ) import System.Directory ( doesDirectoryExist, doesFileExist, renameFile ) import System.FilePath ( (<.>), (</>), takeDirectory ) diff --git a/cabal-install/Distribution/Client/Sandbox/Timestamp.hs b/cabal-install/Distribution/Client/Sandbox/Timestamp.hs index a5b105d1741e46a9928b59a06bbfdf82f0cdc3b4..e6e4d30d609d9b3971c8d7c5a6d4c17a8bcc57f7 100644 --- a/cabal-install/Distribution/Client/Sandbox/Timestamp.hs +++ b/cabal-install/Distribution/Client/Sandbox/Timestamp.hs @@ -50,7 +50,7 @@ import Distribution.Client.SetupWrapper (SetupScriptOptions (..), import Distribution.Client.Utils (inDir, removeExistingFile, tryCanonicalizePath) -import Distribution.Client.Compat.Exception (catchIO) +import Distribution.Compat.Exception (catchIO) import Distribution.Client.Compat.Time (EpochTime, getCurTime, getModTime) diff --git a/cabal-install/Distribution/Client/SetupWrapper.hs b/cabal-install/Distribution/Client/SetupWrapper.hs index 68d94451fac96f8dd0b31a68dd5ce3a4dc57beca..4e279b2adcd1f1d9aba02c4b7ee383078dca08e9 100644 --- a/cabal-install/Distribution/Client/SetupWrapper.hs +++ b/cabal-install/Distribution/Client/SetupWrapper.hs @@ -78,7 +78,7 @@ import Distribution.Text ( display ) import Distribution.Verbosity ( Verbosity ) -import Distribution.Client.Compat.Exception +import Distribution.Compat.Exception ( catchIO ) import System.Directory ( doesFileExist ) diff --git a/cabal-install/Distribution/Client/Utils.hs b/cabal-install/Distribution/Client/Utils.hs index e1347622753865270d60a0f3d0ce076377d043e7..b025c1143f6d2bcc96d2d82097cb099c9f2dbc8c 100644 --- a/cabal-install/Distribution/Client/Utils.hs +++ b/cabal-install/Distribution/Client/Utils.hs @@ -9,7 +9,7 @@ module Distribution.Client.Utils ( MergeResult(..) , canonicalizePathNoThrow ) where -import Distribution.Client.Compat.Exception ( catchIO ) +import Distribution.Compat.Exception ( catchIO ) import qualified Data.ByteString.Lazy as BS import Control.Monad ( when ) diff --git a/cabal-install/Distribution/Client/World.hs b/cabal-install/Distribution/Client/World.hs index 8ef77827b968fcac41fbbe60a37729b4167ca9b5..f77828e8050427eccbc19a9dd129169ab0fbf4d9 100644 --- a/cabal-install/Distribution/Client/World.hs +++ b/cabal-install/Distribution/Client/World.hs @@ -40,7 +40,7 @@ import Distribution.Simple.Utils import Distribution.Text ( Text(..), display, simpleParse ) import qualified Distribution.Compat.ReadP as Parse -import Distribution.Client.Compat.Exception ( catchIO ) +import Distribution.Compat.Exception ( catchIO ) import qualified Text.PrettyPrint as Disp import Text.PrettyPrint ( (<>), (<+>) ) diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal index a787e14b2d7a8de67958e10d670096222fd0c4d6..5a170f1182c1bbf8b881b3e1d895efdbe7c0cd78 100644 --- a/cabal-install/cabal-install.cabal +++ b/cabal-install/cabal-install.cabal @@ -105,7 +105,6 @@ executable cabal Distribution.Client.Utils Distribution.Client.World Distribution.Client.Win32SelfUpgrade - Distribution.Client.Compat.Exception Distribution.Client.Compat.Environment Distribution.Client.Compat.FilePerms Distribution.Client.Compat.Semaphore