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

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 ...@@ -1314,7 +1314,8 @@ modificationTimeIfExists f = do
-- also results in a skip. -- also results in a skip.
withAtomicRename :: (MonadIO m) => FilePath -> (FilePath -> m a) -> m a 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 -- The temp file must be on the same file system (mount) as the target file
-- to result in an atomic move on most platforms. -- to result in an atomic move on most platforms.
-- The standard way to ensure that is to place it into the same directory. -- The standard way to ensure that is to place it into the same directory.
...@@ -1325,6 +1326,17 @@ withAtomicRename targetFile f = do ...@@ -1325,6 +1326,17 @@ withAtomicRename targetFile f = do
liftIO $ renameFile temp targetFile liftIO $ renameFile temp targetFile
return res 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, -- split a string at the last character where 'pred' is True,
-- returning a pair of strings. The first component holds the string -- 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