X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fmain%2FSysTools.lhs;h=e44ed6d7b3a8e27f67acf91439bd94d43faa8a65;hp=874387fc88c690b9e28740eabfca104aa13a7c37;hb=80ce44f764633347ea15b570e3f758b6e7aecd63;hpb=046ee54f048ddd721dcee41916d6a6f68db3b15b diff --git a/compiler/main/SysTools.lhs b/compiler/main/SysTools.lhs index 874387f..e44ed6d 100644 --- a/compiler/main/SysTools.lhs +++ b/compiler/main/SysTools.lhs @@ -51,7 +51,6 @@ import Data.IORef import Data.Int import Control.Monad import System.Exit -import System.Cmd import System.Environment import System.IO import SYSTEM_IO_ERROR as IO @@ -82,9 +81,11 @@ import Text.Regex #if __GLASGOW_HASKELL__ < 603 -- rawSystem comes from libghccompat.a in stage1 -import Compat.RawSystem ( rawSystem ) +import Compat.RawSystem ( rawSystem ) +import System.Cmd ( system ) import GHC.IOBase ( IOErrorType(..) ) #else +import System.Cmd ( rawSystem, system ) import System.Process ( runInteractiveProcess, getProcessExitCode ) import Control.Concurrent( forkIO, newChan, readChan, writeChan ) import Data.Char ( isSpace ) @@ -493,22 +494,25 @@ GLOBAL_VAR(v_DirsToClean, emptyFM, FiniteMap FilePath FilePath ) \begin{code} cleanTempDirs :: DynFlags -> IO () cleanTempDirs dflags - = do ds <- readIORef v_DirsToClean + = unless (dopt Opt_KeepTmpFiles dflags) + $ do ds <- readIORef v_DirsToClean removeTmpDirs dflags (eltsFM ds) writeIORef v_DirsToClean emptyFM cleanTempFiles :: DynFlags -> IO () cleanTempFiles dflags - = do fs <- readIORef v_FilesToClean - removeTmpFiles dflags fs - writeIORef v_FilesToClean [] + = unless (dopt Opt_KeepTmpFiles dflags) + $ do fs <- readIORef v_FilesToClean + removeTmpFiles dflags fs + writeIORef v_FilesToClean [] cleanTempFilesExcept :: DynFlags -> [FilePath] -> IO () cleanTempFilesExcept dflags dont_delete - = do files <- readIORef v_FilesToClean - let (to_keep, to_delete) = partition (`elem` dont_delete) files - removeTmpFiles dflags to_delete - writeIORef v_FilesToClean to_keep + = unless (dopt Opt_KeepTmpFiles dflags) + $ do files <- readIORef v_FilesToClean + let (to_keep, to_delete) = partition (`elem` dont_delete) files + removeTmpFiles dflags to_delete + writeIORef v_FilesToClean to_keep -- find a temporary name that doesn't already exist.