system is replaced with rawSystem. This allows to use path names with embeded
spaces under Windows. This is the same story as with hsc2hs but ghc-pkg is
used only with GHC, so the change will not affect other compilers.
Cabal uses "Program Files" as default installation path and this manifests
the bug.
import Distribution.Package
import Distribution.Version
import Compat.Directory ( getAppUserDataDirectory )
import Distribution.Package
import Distribution.Version
import Compat.Directory ( getAppUserDataDirectory )
+import Compat.RawSystem ( rawSystem )
import Control.Exception ( evaluate )
import qualified Control.Exception as Exception
import Control.Exception ( evaluate )
import qualified Control.Exception as Exception
import Monad
import Directory
import System ( getArgs, getProgName,
import Monad
import Directory
import System ( getArgs, getProgName,
- system, exitWith,
- ExitCode(..)
)
import System.IO
import Data.List ( isPrefixOf, isSuffixOf, intersperse )
)
import System.IO
import Data.List ( isPrefixOf, isSuffixOf, intersperse )
batch_lib_file = dir ++ '/':batch_file
hPutStr stderr ("building GHCi library " ++ ghci_lib_file ++ "...")
#if defined(darwin_TARGET_OS)
batch_lib_file = dir ++ '/':batch_file
hPutStr stderr ("building GHCi library " ++ ghci_lib_file ++ "...")
#if defined(darwin_TARGET_OS)
- r <- system("ld -r -x -o " ++ ghci_lib_file ++
- " -all_load " ++ batch_lib_file)
+ r <- rawSystem "ld" ["-r","-x","-o",ghci_lib_file,"-all_load",batch_lib_file]
#elif defined(mingw32_HOST_OS)
execDir <- getExecDir "/bin/ghc-pkg.exe"
#elif defined(mingw32_HOST_OS)
execDir <- getExecDir "/bin/ghc-pkg.exe"
- r <- system (maybe "" (++"/gcc-lib/") execDir++"ld -r -x -o " ++
- ghci_lib_file ++ " --whole-archive " ++ batch_lib_file)
+ r <- rawSystem (maybe "" (++"/gcc-lib/") execDir++"ld") ["-r","-x","-o",ghci_lib_file,"--whole-archive",batch_lib_file]
- r <- system("ld -r -x -o " ++ ghci_lib_file ++
- " --whole-archive " ++ batch_lib_file)
+ r <- rawSystem "ld" ["-r","-x","-o",ghci_lib_file,"--whole-archive",batch_lib_file]
#endif
when (r /= ExitSuccess) $ exitWith r
hPutStrLn stderr (" done.")
#endif
when (r /= ExitSuccess) $ exitWith r
hPutStrLn stderr (" done.")