packages feed

haste-compiler-0.5.0: src/Haste/GHCPaths.hs

-- | Paths to GHC binaries and directories.
module Haste.GHCPaths where
import System.IO.Unsafe
import System.Directory (findExecutable)
import Config (cProjectVersion)
import Data.Maybe (catMaybes)

-- | Path to the GHC binary.
ghcBinary :: FilePath
ghcBinary = unsafePerformIO $ do
  exes <- catMaybes `fmap` mapM findExecutable ["ghc-" ++ cProjectVersion,
                                                "ghc"]
  case exes of
    (exe:_) -> return exe
    _       -> error $  "No appropriate GHC executable in search path!\n"
                     ++ "Are you sure you have GHC " ++ cProjectVersion
                     ++ " installed?"

-- | Path to the GHC binary.
ghcPkgBinary :: FilePath
ghcPkgBinary = unsafePerformIO $ do
  exes <- catMaybes `fmap` mapM findExecutable ["ghc-pkg-" ++ cProjectVersion,
                                                "ghc-pkg"]
  case exes of
    (exe:_) -> return exe
    _       -> error $  "No appropriate ghc-pkg executable in search path!\n"
                     ++ "Are you sure you have GHC " ++ cProjectVersion
                     ++ " installed?"