Commit 1c1b63d6 authored by Ben Gamari's avatar Ben Gamari 🐢

compiler: Disable atomic renaming on Windows

As discussed in #16450, this feature regresses CI on Windows, causing
non-deterministic failures due to missing files.
parent 600a1ac3
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment