[commit: ghc] wip/nfs-locking: Move Base.removeFileIfExists to Rules.Actions.removeFile. (658d373)

git at git.haskell.org git at git.haskell.org
Fri Oct 27 00:11:24 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/nfs-locking
Link       : http://ghc.haskell.org/trac/ghc/changeset/658d373c5b823792758e7d3ccb0577b6ecb24c82/ghc

>---------------------------------------------------------------

commit 658d373c5b823792758e7d3ccb0577b6ecb24c82
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date:   Thu May 5 03:59:50 2016 +0100

    Move Base.removeFileIfExists to Rules.Actions.removeFile.
    
    See #163.


>---------------------------------------------------------------

658d373c5b823792758e7d3ccb0577b6ecb24c82
 src/Base.hs               | 7 +------
 src/Rules/Actions.hs      | 8 +++++++-
 src/Rules/Clean.hs        | 4 +---
 src/Rules/Dependencies.hs | 2 +-
 src/Rules/Library.hs      | 2 +-
 5 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/Base.hs b/src/Base.hs
index ccadd22..a26fea1 100644
--- a/src/Base.hs
+++ b/src/Base.hs
@@ -23,7 +23,7 @@ module Base (
     -- * Miscellaneous utilities
     minusOrd, intersectOrd, lookupAll, replaceEq, quote, replaceSeparators,
     decodeModule, encodeModule, unifyPath, (-/-), versionToInt,
-    removeFileIfExists, matchVersionedFilePath
+    matchVersionedFilePath
     ) where
 
 import Control.Applicative
@@ -39,7 +39,6 @@ import Development.Shake hiding (parallel, unit, (*>), Normal)
 import Development.Shake.Classes
 import Development.Shake.FilePath
 import System.Console.ANSI
-import qualified System.Directory as IO
 import System.IO
 
 -- TODO: reexport Stage, etc.?
@@ -172,10 +171,6 @@ lookupAll (x:xs) (y:ys) = case compare x (fst y) of
     EQ -> Just (snd y) : lookupAll xs (y:ys)
     GT -> lookupAll (x:xs) ys
 
--- | Remove a file that doesn't necessarily exist
-removeFileIfExists :: FilePath -> Action ()
-removeFileIfExists f = liftIO . whenM (IO.doesFileExist f) $ IO.removeFile f
-
 -- | Given a @prefix@ and a @suffix@ check whether a @filePath@ matches the
 -- template @prefix ++ version ++ suffix@ where @version@ is an arbitrary string
 -- comprising digits (@0-9@), dashes (@-@), and dots (@.@). Examples:
diff --git a/src/Rules/Actions.hs b/src/Rules/Actions.hs
index 25bf72e..9910ce5 100644
--- a/src/Rules/Actions.hs
+++ b/src/Rules/Actions.hs
@@ -1,6 +1,6 @@
 module Rules.Actions (
     build, buildWithResources, buildWithCmdOptions, copyFile, moveFile,
-    createDirectory, removeDirectory, copyDirectory, moveDirectory,
+    removeFile, createDirectory, removeDirectory, copyDirectory, moveDirectory,
     applyPatch, fixFile, runMake, runMakeVerbose, renderLibrary, renderProgram,
     runBuilder, makeExecutable
     ) where
@@ -94,6 +94,12 @@ moveFile source target = do
     putProgressInfo $ renderAction "Move file" source target
     liftIO $ IO.renameFile source target
 
+-- | Remove a file that doesn't necessarily exist.
+removeFile :: FilePath -> Action ()
+removeFile file = do
+    putBuild $ "| Remove file " ++ file
+    liftIO . whenM (IO.doesFileExist file) $ IO.removeFile file
+
 createDirectory :: FilePath -> Action ()
 createDirectory dir = do
     putBuild $ "| Create directory " ++ dir
diff --git a/src/Rules/Clean.hs b/src/Rules/Clean.hs
index f615e54..613073a 100644
--- a/src/Rules/Clean.hs
+++ b/src/Rules/Clean.hs
@@ -17,9 +17,7 @@ cleanRules = do
         removeDirectory programInplacePath
         removeDirectory "inplace/lib"
         removeDirectory derivedConstantsPath
-        forM_ includesDependencies $ \file -> do
-            putBuild $ "| Remove " ++ file
-            removeFileIfExists file
+        forM_ includesDependencies removeFile
         putBuild $ "| Remove files generated by ghc-cabal..."
         forM_ knownPackages $ \pkg ->
             forM_ [Stage0 ..] $ \stage -> do
diff --git a/src/Rules/Dependencies.hs b/src/Rules/Dependencies.hs
index 9059b3d..f5d781a 100644
--- a/src/Rules/Dependencies.hs
+++ b/src/Rules/Dependencies.hs
@@ -29,7 +29,7 @@ buildPackageDependencies rs context at Context {..} =
             then writeFileChanged out ""
             else buildWithResources rs $
                 Target context (Ghc FindDependencies stage) srcs [out]
-            removeFileIfExists $ out <.> "bak"
+            removeFile $ out <.> "bak"
 
         -- TODO: don't accumulate *.deps into .dependencies
         path -/- ".dependencies" %> \out -> do
diff --git a/src/Rules/Library.hs b/src/Rules/Library.hs
index 8e09162..2b90d1f 100644
--- a/src/Rules/Library.hs
+++ b/src/Rules/Library.hs
@@ -22,7 +22,7 @@ buildPackageLibrary context at Context {..} = do
 
     -- TODO: handle dynamic libraries
     matchVersionedFilePath libPrefix (waySuffix way <.> "a") ?> \a -> do
-        removeFileIfExists a
+        removeFile a
         cSrcs <- cSources context
         hSrcs <- hSources context
 



More information about the ghc-commits mailing list