aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Setup.hs18
1 files changed, 11 insertions, 7 deletions
diff --git a/Setup.hs b/Setup.hs
index a328c75a7..312e1cf47 100644
--- a/Setup.hs
+++ b/Setup.hs
@@ -32,6 +32,7 @@ import Data.Version
import System.Process (readProcess)
import Text.ParserCombinators.ReadP (readP_to_S, skipSpaces, eof)
import Control.Monad (when)
+import qualified Control.Exception as E
main :: IO ()
main = defaultMainWithHooks $ simpleUserHooks {
@@ -44,13 +45,16 @@ main = defaultMainWithHooks $ simpleUserHooks {
findHsb2hsVersion :: Verbosity -> FilePath -> IO (Maybe Version)
findHsb2hsVersion verb fp = do
- outp <- readProcess fp ["--version"] ""
- case readP_to_S (do v <- parseVersion
- skipSpaces
- eof
- return v) outp of
- ((v,""):_) -> return (Just v)
- _ -> return Nothing
+ let handleExitFailure :: IOError -> IO (Maybe Version)
+ handleExitFailure _ = return Nothing
+ E.handle handleExitFailure $ do
+ outp <- readProcess fp ["--version"] ""
+ case readP_to_S (do v <- parseVersion
+ skipSpaces
+ eof
+ return v) outp of
+ ((v,""):_) -> return (Just v)
+ _ -> return Nothing
ppBlobSuffixHandler :: PPSuffixHandler
ppBlobSuffixHandler = ("hsb", \_ lbi ->