diff options
-rw-r--r-- | compiler/utils/Util.hs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/compiler/utils/Util.hs b/compiler/utils/Util.hs index 41f63f2246..673088159f 100644 --- a/compiler/utils/Util.hs +++ b/compiler/utils/Util.hs @@ -1314,7 +1314,8 @@ modificationTimeIfExists f = do -- also results in a skip. withAtomicRename :: (MonadIO m) => FilePath -> (FilePath -> m a) -> m a -withAtomicRename targetFile f = do +withAtomicRename targetFile f + | enableAtomicRename = do -- The temp file must be on the same file system (mount) as the target file -- to result in an atomic move on most platforms. -- The standard way to ensure that is to place it into the same directory. @@ -1325,6 +1326,17 @@ withAtomicRename targetFile f = do liftIO $ renameFile temp targetFile return res + | otherwise = f targetFile + where + -- As described in #16450, enabling this causes spurious build failures due + -- to apparently missing files. + enableAtomicRename :: Bool +#if defined(mingw32_BUILD_OS) + enableAtomicRename = False +#else + enableAtomicRename = True +#endif + -- -------------------------------------------------------------- -- split a string at the last character where 'pred' is True, -- returning a pair of strings. The first component holds the string |